package controllers import ( "InfantrySkillCalculator/models" "InfantrySkillCalculator/utils" "github.com/gin-gonic/gin" "net/http" "session" ) type UpdateSettingsInput struct { ActiveGameID uint `json:"active_game_id"` SquadColors bool `json:"squad_colors"` CalcMedian bool `json:"calc_median"` UseCache bool `json:"use_cache"` } // GetSettings GET /settings func GetSettings(c *gin.Context) { var settings models.UserSettings username, ok := session.GetUsername(c) if !ok { c.JSON(http.StatusBadRequest, gin.H{"error": "Not logged in!"}) utils.Logger.Errorf("[SETTINGS] User not logged in: %s", username) return } if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"}) utils.Logger.Errorf("[SETTINGS] No settings available for user %s", username) return } sanitizedSettings := map[string]interface{}{ "active_game_id": settings.ActiveGameID, "squad_colors": settings.SquadColors, "calc_median": settings.CalcMedian, "use_cache": settings.UseCache, } c.JSON(http.StatusOK, sanitizedSettings) } // UpdateSettings PATCH /settings func UpdateSettings(c *gin.Context) { var settings models.UserSettings username, ok := session.GetUsername(c) if !ok { c.JSON(http.StatusBadRequest, gin.H{"error": "Not logged in!"}) utils.Logger.Errorf("[SETTINGS] User not logged in: %s", username) return } if err := models.DB.Where("username = ?", username).First(&settings).Error; err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "No settings available!"}) utils.Logger.Errorf("[SETTINGS] No settings available for user %s", username) return } var input UpdateSettingsInput if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) utils.Logger.Errorf("[SETTINGS] Failed to bind JSON: %s", err.Error()) return } if err := models.DB.Model(&settings).Updates(input).Error; err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) utils.Logger.Errorf("[SETTINGS] Failed to update settings: %s", err.Error()) return } c.JSON(http.StatusOK, nil) }