DEVELOPMENT ENVIRONMENT

~liljamo/deck-builder

0bf106d318d83d6ae21cf7ec3d45b28c523e426a — Jonni Liljamo 1 year, 4 months ago 5916aa7
feat(api): end game endpoint
2 files changed, 41 insertions(+), 0 deletions(-)

A api/handlers/endgame.go
M api/main.go
A api/handlers/endgame.go => api/handlers/endgame.go +40 -0
@@ 0,0 1,40 @@
/*
 * This file is part of laurelin_api
 * Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
 *
 * Licensed under GPL-3.0-only.
 * See LICENSE for licensing information.
 */

package handlers

import (
	"api/apierror"
	"api/db"
	"api/models"
	"net/http"

	"github.com/gin-gonic/gin"
)

func EndGame(c *gin.Context) {
	id := c.Param("id")

	// fetch the game
	var game models.Game
	record := db.DbConn.Where("id = ?", id).First(&game)
	if record.Error != nil {
		c.JSON(http.StatusNotFound, gin.H{"error": apierror.GameNotFound})
		c.Abort()
		return
	}

	updatedGame := db.DbConn.Model(&game).Updates(models.Game{State: models.GAMESTATE_FINISHED})
	if updatedGame.Error != nil {
		c.JSON(http.StatusInternalServerError, gin.H{"error": apierror.Placeholder})
		c.Abort()
		return
	}

	c.JSON(http.StatusOK, gin.H{})
}

M api/main.go => api/main.go +1 -0
@@ 62,6 62,7 @@ func createRouter() *gin.Engine {
			game.PATCH("/:id/state", handlers.PatchGameState)
			game.GET("/my_games", handlers.MyGames)
			game.POST("/:id/join", handlers.JoinGame)
			game.POST("/:id/end", handlers.EndGame)
		}
		action := api.Group("/game/action").Use(middlewares.Auth())
		{