aboutsummaryrefslogtreecommitdiff
path: root/backend/controllers
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--backend/controllers/mapController.go26
1 files changed, 17 insertions, 9 deletions
diff --git a/backend/controllers/mapController.go b/backend/controllers/mapController.go
index 2bf1fdc..506daa2 100644
--- a/backend/controllers/mapController.go
+++ b/backend/controllers/mapController.go
@@ -250,7 +250,7 @@ func FetchGames(c *gin.Context) {
250// @Tags chapters 250// @Tags chapters
251// @Produce json 251// @Produce json
252// @Param id path int true "Game ID" 252// @Param id path int true "Game ID"
253// @Success 200 {object} models.Response{data=[]models.Chapter} 253// @Success 200 {object} models.Response{data=models.ChaptersResponse}
254// @Failure 400 {object} models.Response 254// @Failure 400 {object} models.Response
255// @Router /chapters/{id} [get] 255// @Router /chapters/{id} [get]
256func FetchChapters(c *gin.Context) { 256func FetchChapters(c *gin.Context) {
@@ -260,25 +260,29 @@ func FetchChapters(c *gin.Context) {
260 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 260 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
261 return 261 return
262 } 262 }
263 rows, err := database.DB.Query(`SELECT id, name FROM chapters WHERE game_id = $1`, gameID) 263 var response models.ChaptersResponse
264 rows, err := database.DB.Query(`SELECT c.id, c.name, g.name FROM chapters c INNER JOIN games g ON c.game_id = g.id WHERE game_id = $1`, gameID)
264 if err != nil { 265 if err != nil {
265 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 266 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
266 return 267 return
267 } 268 }
268 var chapters []models.Chapter 269 var chapters []models.Chapter
270 var gameName string
269 for rows.Next() { 271 for rows.Next() {
270 var chapter models.Chapter 272 var chapter models.Chapter
271 if err := rows.Scan(&chapter.ID, &chapter.Name); err != nil { 273 if err := rows.Scan(&chapter.ID, &chapter.Name, &gameName); err != nil {
272 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 274 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
273 return 275 return
274 } 276 }
275 chapter.GameID = intID
276 chapters = append(chapters, chapter) 277 chapters = append(chapters, chapter)
277 } 278 }
279 response.Game.ID = intID
280 response.Game.Name = gameName
281 response.Chapters = chapters
278 c.JSON(http.StatusOK, models.Response{ 282 c.JSON(http.StatusOK, models.Response{
279 Success: true, 283 Success: true,
280 Message: "Successfully retrieved chapters.", 284 Message: "Successfully retrieved chapters.",
281 Data: chapters, 285 Data: response,
282 }) 286 })
283} 287}
284 288
@@ -298,24 +302,28 @@ func FetchChapterMaps(c *gin.Context) {
298 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 302 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
299 return 303 return
300 } 304 }
301 rows, err := database.DB.Query(`SELECT id, name FROM maps WHERE chapter_id = $1`, chapterID) 305 var response models.ChapterMapsResponse
306 rows, err := database.DB.Query(`SELECT m.id, m.name, c.name FROM maps m INNER JOIN chapters c ON m.chapter_id = c.id WHERE chapter_id = $1`, chapterID)
302 if err != nil { 307 if err != nil {
303 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 308 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
304 return 309 return
305 } 310 }
306 var maps []models.MapShort 311 var maps []models.MapShort
312 var chapterName string
307 for rows.Next() { 313 for rows.Next() {
308 var mapShort models.MapShort 314 var mapShort models.MapShort
309 if err := rows.Scan(&mapShort.ID, &mapShort.Name); err != nil { 315 if err := rows.Scan(&mapShort.ID, &mapShort.Name, &chapterName); err != nil {
310 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) 316 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
311 return 317 return
312 } 318 }
313 mapShort.ChapterID = intID
314 maps = append(maps, mapShort) 319 maps = append(maps, mapShort)
315 } 320 }
321 response.Chapter.ID = intID
322 response.Chapter.Name = chapterName
323 response.Maps = maps
316 c.JSON(http.StatusOK, models.Response{ 324 c.JSON(http.StatusOK, models.Response{
317 Success: true, 325 Success: true,
318 Message: "Successfully retrieved maps.", 326 Message: "Successfully retrieved maps.",
319 Data: maps, 327 Data: response,
320 }) 328 })
321} 329}