aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2024-02-14 18:26:27 +0300
committerGitHub <noreply@github.com>2024-02-14 18:26:27 +0300
commit6c2532d426b05acdcb008b1cd65c83d209fa758b (patch)
tree3fd792c9e11a49ebb9b7ad54b994f014ed70f0b2 /backend
parentfix: hopefully fix profile placement calculation (#123) (diff)
downloadlphub-6c2532d426b05acdcb008b1cd65c83d209fa758b.tar.gz
lphub-6c2532d426b05acdcb008b1cd65c83d209fa758b.tar.bz2
lphub-6c2532d426b05acdcb008b1cd65c83d209fa758b.zip
feat: add images to game/chapter/map select (#151)
Diffstat (limited to 'backend')
-rw-r--r--backend/database/init.sql3
-rw-r--r--backend/handlers/map.go16
-rw-r--r--backend/models/models.go3
3 files changed, 14 insertions, 8 deletions
diff --git a/backend/database/init.sql b/backend/database/init.sql
index 54867ca..1fda15d 100644
--- a/backend/database/init.sql
+++ b/backend/database/init.sql
@@ -16,6 +16,7 @@ CREATE TABLE games (
16 id SERIAL, 16 id SERIAL,
17 name TEXT NOT NULL, 17 name TEXT NOT NULL,
18 is_coop BOOLEAN NOT NULL, 18 is_coop BOOLEAN NOT NULL,
19 image TEXT NOT NULL,
19 PRIMARY KEY (id) 20 PRIMARY KEY (id)
20); 21);
21 22
@@ -24,6 +25,7 @@ CREATE TABLE chapters (
24 game_id SMALLINT NOT NULL, 25 game_id SMALLINT NOT NULL,
25 name TEXT NOT NULL, 26 name TEXT NOT NULL,
26 is_disabled BOOLEAN NOT NULL DEFAULT false, 27 is_disabled BOOLEAN NOT NULL DEFAULT false,
28 image TEXT NOT NULL,
27 PRIMARY KEY (id), 29 PRIMARY KEY (id),
28 FOREIGN KEY (game_id) REFERENCES games(id) 30 FOREIGN KEY (game_id) REFERENCES games(id)
29); 31);
@@ -40,6 +42,7 @@ CREATE TABLE maps (
40 chapter_id SMALLINT NOT NULL, 42 chapter_id SMALLINT NOT NULL,
41 name TEXT NOT NULL, 43 name TEXT NOT NULL,
42 is_disabled BOOLEAN NOT NULL DEFAULT false, 44 is_disabled BOOLEAN NOT NULL DEFAULT false,
45 image TEXT NOT NULL,
43 PRIMARY KEY (id), 46 PRIMARY KEY (id),
44 FOREIGN KEY (game_id) REFERENCES games(id), 47 FOREIGN KEY (game_id) REFERENCES games(id),
45 FOREIGN KEY (chapter_id) REFERENCES chapters(id) 48 FOREIGN KEY (chapter_id) REFERENCES chapters(id)
diff --git a/backend/handlers/map.go b/backend/handlers/map.go
index dfadade..8073833 100644
--- a/backend/handlers/map.go
+++ b/backend/handlers/map.go
@@ -328,7 +328,7 @@ func FetchMapLeaderboards(c *gin.Context) {
328// @Failure 400 {object} models.Response 328// @Failure 400 {object} models.Response
329// @Router /games [get] 329// @Router /games [get]
330func FetchGames(c *gin.Context) { 330func FetchGames(c *gin.Context) {
331 rows, err := database.DB.Query(`SELECT id, name, is_coop FROM games`) 331 rows, err := database.DB.Query(`SELECT id, name, is_coop, image FROM games`)
332 if err != nil { 332 if err != nil {
333 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 333 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
334 return 334 return
@@ -336,7 +336,7 @@ func FetchGames(c *gin.Context) {
336 var games []models.Game 336 var games []models.Game
337 for rows.Next() { 337 for rows.Next() {
338 var game models.Game 338 var game models.Game
339 if err := rows.Scan(&game.ID, &game.Name, &game.IsCoop); err != nil { 339 if err := rows.Scan(&game.ID, &game.Name, &game.IsCoop, &game.Image); err != nil {
340 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 340 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
341 return 341 return
342 } 342 }
@@ -365,7 +365,7 @@ func FetchChapters(c *gin.Context) {
365 return 365 return
366 } 366 }
367 var response ChaptersResponse 367 var response ChaptersResponse
368 rows, err := database.DB.Query(`SELECT c.id, c.name, g.name, c.is_disabled FROM chapters c INNER JOIN games g ON c.game_id = g.id WHERE game_id = $1`, gameID) 368 rows, err := database.DB.Query(`SELECT c.id, c.name, g.name, c.is_disabled, c.image FROM chapters c INNER JOIN games g ON c.game_id = g.id WHERE game_id = $1`, gameID)
369 if err != nil { 369 if err != nil {
370 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 370 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
371 return 371 return
@@ -374,7 +374,7 @@ func FetchChapters(c *gin.Context) {
374 var gameName string 374 var gameName string
375 for rows.Next() { 375 for rows.Next() {
376 var chapter models.Chapter 376 var chapter models.Chapter
377 if err := rows.Scan(&chapter.ID, &chapter.Name, &gameName, &chapter.IsDisabled); err != nil { 377 if err := rows.Scan(&chapter.ID, &chapter.Name, &gameName, &chapter.IsDisabled, &chapter.Image); err != nil {
378 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 378 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
379 return 379 return
380 } 380 }
@@ -405,14 +405,14 @@ func FetchMaps(c *gin.Context) {
405 return 405 return
406 } 406 }
407 var response GameMapsResponse 407 var response GameMapsResponse
408 rows, err := database.DB.Query(`SELECT g.id, g.name, g.is_coop, m.id, m."name", m.is_disabled FROM games g INNER JOIN maps m ON g.id = m.game_id WHERE g.id = $1 ORDER BY m.id `, gameID) 408 rows, err := database.DB.Query(`SELECT g.id, g.name, g.is_coop, m.id, m."name", m.image m.is_disabled FROM games g INNER JOIN maps m ON g.id = m.game_id WHERE g.id = $1 ORDER BY m.id `, gameID)
409 if err != nil { 409 if err != nil {
410 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 410 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
411 return 411 return
412 } 412 }
413 for rows.Next() { 413 for rows.Next() {
414 var mapShort models.MapShort 414 var mapShort models.MapShort
415 if err := rows.Scan(&response.Game.ID, &response.Game.Name, &response.Game.IsCoop, &mapShort.ID, &mapShort.Name, &mapShort.IsDisabled); err != nil { 415 if err := rows.Scan(&response.Game.ID, &response.Game.Name, &response.Game.IsCoop, &mapShort.ID, &mapShort.Name, &mapShort.IsDisabled, &mapShort.Image); err != nil {
416 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 416 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
417 return 417 return
418 } 418 }
@@ -442,7 +442,7 @@ func FetchChapterMaps(c *gin.Context) {
442 return 442 return
443 } 443 }
444 var response ChapterMapsResponse 444 var response ChapterMapsResponse
445 rows, err := database.DB.Query(`SELECT m.id, m.name, c.name, m.is_disabled FROM maps m INNER JOIN chapters c ON m.chapter_id = c.id WHERE chapter_id = $1`, chapterID) 445 rows, err := database.DB.Query(`SELECT m.id, m.name, c.name, m.is_disabled, m.image FROM maps m INNER JOIN chapters c ON m.chapter_id = c.id WHERE chapter_id = $1`, chapterID)
446 if err != nil { 446 if err != nil {
447 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 447 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
448 return 448 return
@@ -451,7 +451,7 @@ func FetchChapterMaps(c *gin.Context) {
451 var chapterName string 451 var chapterName string
452 for rows.Next() { 452 for rows.Next() {
453 var mapShort models.MapShort 453 var mapShort models.MapShort
454 if err := rows.Scan(&mapShort.ID, &mapShort.Name, &chapterName, &mapShort.IsDisabled); err != nil { 454 if err := rows.Scan(&mapShort.ID, &mapShort.Name, &chapterName, &mapShort.IsDisabled, &mapShort.Image); err != nil {
455 c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) 455 c.JSON(http.StatusOK, models.ErrorResponse(err.Error()))
456 return 456 return
457 } 457 }
diff --git a/backend/models/models.go b/backend/models/models.go
index bf3ac86..b766b97 100644
--- a/backend/models/models.go
+++ b/backend/models/models.go
@@ -52,6 +52,7 @@ type Map struct {
52type MapShort struct { 52type MapShort struct {
53 ID int `json:"id"` 53 ID int `json:"id"`
54 Name string `json:"name"` 54 Name string `json:"name"`
55 Image string `json:"image"`
55 IsDisabled bool `json:"is_disabled"` 56 IsDisabled bool `json:"is_disabled"`
56} 57}
57 58
@@ -88,12 +89,14 @@ type UserRanking struct {
88type Game struct { 89type Game struct {
89 ID int `json:"id"` 90 ID int `json:"id"`
90 Name string `json:"name"` 91 Name string `json:"name"`
92 Image string `json:"image"`
91 IsCoop bool `json:"is_coop"` 93 IsCoop bool `json:"is_coop"`
92} 94}
93 95
94type Chapter struct { 96type Chapter struct {
95 ID int `json:"id"` 97 ID int `json:"id"`
96 Name string `json:"name"` 98 Name string `json:"name"`
99 Image string `json:"image"`
97 IsDisabled bool `json:"is_disabled"` 100 IsDisabled bool `json:"is_disabled"`
98} 101}
99 102