package handler import ( "errors" "net/http" "galaxy/game/internal/controller" "galaxy/model/rest" "github.com/gin-gonic/gin" "github.com/google/uuid" ) func InitHandler(c *gin.Context, executor CommandExecutor) { var init rest.InitRequest if errorResponse(c, c.ShouldBindJSON(&init)) { return } if init.GameID == uuid.Nil { c.JSON(http.StatusBadRequest, gin.H{"error": controller.ErrGameInitNilUUID.Error()}) return } races := make([]string, len(init.Races)) for i := range init.Races { races[i] = init.Races[i].RaceName } s, err := executor.GenerateGame(init.GameID, races) if err != nil { if errors.Is(err, controller.ErrGameAlreadyInit) { c.JSON(http.StatusConflict, gin.H{"error": err.Error()}) return } if errorResponse(c, err) { return } } c.JSON(http.StatusCreated, s) }