package handlers import ( "hamster-tycoon/storage/dao" "hamster-tycoon/storage/model" "hamster-tycoon/storage/validators" "hamster-tycoon/utils" "net/http" "github.com/gin-gonic/gin" ) func (hc *handlersContext) getAllCages(c *gin.Context) { cages, err := hc.db.GetAllCages() if err != nil { utils.GetLoggerFromCtx(c).WithError(err).Error("error while getting cages") utils.JSONErrorWithMessage(c.Writer, model.ErrInternalServer, "Error while getting cages") return } utils.JSON(c.Writer, http.StatusOK, cages) } func (hc *handlersContext) getACage(c *gin.Context) { cageID := c.Param("cageID") err := hc.validator.VarCtx(c, cageID, "uuid4") if err != nil { utils.JSONError(c.Writer, validators.NewDataValidationAPIError(err)) return } cage, err := hc.db.GetCageByID(cageID) if e, ok := err.(*dao.Error); ok { switch { case e.Type == dao.ErrTypeNotFound: utils.JSONErrorWithMessage(c.Writer, model.ErrNotFound, "Cage not found") return default: utils.GetLoggerFromCtx(c).WithError(err).WithField("type", e.Type).Error("error GetCage: get cage error type not handled") utils.JSONError(c.Writer, model.ErrInternalServer) return } } else if err != nil { utils.GetLoggerFromCtx(c).WithError(err).Error("error while get cage") utils.JSONError(c.Writer, model.ErrInternalServer) return } if cage == nil { utils.JSONErrorWithMessage(c.Writer, model.ErrNotFound, "Cage not found") return } utils.JSON(c.Writer, http.StatusOK, cage) }