71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package handlers
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"hamster-tycoon/storage/dao"
|
|
"hamster-tycoon/storage/model"
|
|
"hamster-tycoon/storage/validators"
|
|
"hamster-tycoon/utils"
|
|
"net/http"
|
|
)
|
|
|
|
func (hc *handlersContext) getAllGames(c *gin.Context) {
|
|
users, err := hc.db.GetAllGames()
|
|
if err != nil {
|
|
utils.GetLoggerFromCtx(c).WithError(err).Error("error while getting games")
|
|
utils.JSONErrorWithMessage(c.Writer, model.ErrInternalServer, "Error while getting games")
|
|
return
|
|
}
|
|
utils.JSON(c.Writer, http.StatusOK, users)
|
|
}
|
|
|
|
func (hc *handlersContext) getAGame(c *gin.Context) {
|
|
gameId := c.Param("gameId")
|
|
|
|
err := hc.validator.VarCtx(c, gameId, "uuid4")
|
|
if err != nil {
|
|
utils.JSONError(c.Writer, validators.NewDataValidationAPIError(err))
|
|
return
|
|
}
|
|
|
|
game, err := hc.gameService.GetAGameById(gameId)
|
|
if e, ok := err.(*dao.DAOError); ok {
|
|
switch {
|
|
case e.Type == dao.ErrTypeNotFound:
|
|
utils.JSONErrorWithMessage(c.Writer, model.ErrNotFound, "Game not found")
|
|
return
|
|
default:
|
|
utils.GetLoggerFromCtx(c).WithError(err).WithField("type", e.Type).Error("error GetGame: get game error type not handled")
|
|
utils.JSONError(c.Writer, model.ErrInternalServer)
|
|
return
|
|
}
|
|
} else if err != nil {
|
|
utils.GetLoggerFromCtx(c).WithError(err).Error("error while get game")
|
|
utils.JSONError(c.Writer, model.ErrInternalServer)
|
|
return
|
|
}
|
|
|
|
if game == nil {
|
|
utils.JSONErrorWithMessage(c.Writer, model.ErrNotFound, "Game not found")
|
|
return
|
|
}
|
|
|
|
utils.JSON(c.Writer, http.StatusOK, game)
|
|
}
|
|
|
|
func (hc *handlersContext) createAGame(c *gin.Context) {
|
|
|
|
}
|
|
|
|
func (hc *handlersContext) updateAGame(c *gin.Context) {
|
|
|
|
}
|
|
|
|
func (hc *handlersContext) deleteAGame(c *gin.Context) {
|
|
|
|
}
|
|
|
|
func (hc *handlersContext) getHamstersOfGame(c *gin.Context) {
|
|
|
|
}
|