GetSettings handles the GET /api/settings request. It retrieves all system settings, groups them by category, and returns them.
(c *gin.Context)
| 15 | // GetSettings handles the GET /api/settings request. |
| 16 | // It retrieves all system settings, groups them by category, and returns them. |
| 17 | func (s *Server) GetSettings(c *gin.Context) { |
| 18 | currentSettings := s.SettingsManager.GetSettings() |
| 19 | settingsInfo := utils.GenerateSettingsMetadata(¤tSettings) |
| 20 | |
| 21 | // Translate settings info |
| 22 | for i := range settingsInfo { |
| 23 | // Translate name if it's an i18n key |
| 24 | if strings.HasPrefix(settingsInfo[i].Name, "config.") { |
| 25 | settingsInfo[i].Name = i18n.Message(c, settingsInfo[i].Name) |
| 26 | } |
| 27 | // Translate description if it's an i18n key |
| 28 | if strings.HasPrefix(settingsInfo[i].Description, "config.") { |
| 29 | settingsInfo[i].Description = i18n.Message(c, settingsInfo[i].Description) |
| 30 | } |
| 31 | // Translate category if it's an i18n key |
| 32 | if strings.HasPrefix(settingsInfo[i].Category, "config.") { |
| 33 | settingsInfo[i].Category = i18n.Message(c, settingsInfo[i].Category) |
| 34 | } |
| 35 | } |
| 36 | |
| 37 | // Group settings by category while preserving order |
| 38 | categorized := make(map[string][]models.SystemSettingInfo) |
| 39 | var categoryOrder []string |
| 40 | for _, s := range settingsInfo { |
| 41 | if _, exists := categorized[s.Category]; !exists { |
| 42 | categoryOrder = append(categoryOrder, s.Category) |
| 43 | } |
| 44 | categorized[s.Category] = append(categorized[s.Category], s) |
| 45 | } |
| 46 | |
| 47 | // Create the response structure in the correct order |
| 48 | var responseData []models.CategorizedSettings |
| 49 | for _, categoryName := range categoryOrder { |
| 50 | responseData = append(responseData, models.CategorizedSettings{ |
| 51 | CategoryName: categoryName, |
| 52 | Settings: categorized[categoryName], |
| 53 | }) |
| 54 | } |
| 55 | |
| 56 | response.Success(c, responseData) |
| 57 | } |
| 58 | |
| 59 | // UpdateSettings handles the PUT /api/settings request. |
| 60 | func (s *Server) UpdateSettings(c *gin.Context) { |
no test coverage detected