GetGroupConfigOptions returns metadata describing available overrides.
()
| 798 | |
| 799 | // GetGroupConfigOptions returns metadata describing available overrides. |
| 800 | func (s *GroupService) GetGroupConfigOptions() ([]ConfigOption, error) { |
| 801 | defaultSettings := utils.DefaultSystemSettings() |
| 802 | settingDefinitions := utils.GenerateSettingsMetadata(&defaultSettings) |
| 803 | defMap := make(map[string]models.SystemSettingInfo) |
| 804 | for _, def := range settingDefinitions { |
| 805 | defMap[def.Key] = def |
| 806 | } |
| 807 | |
| 808 | currentSettings := s.settingsManager.GetSettings() |
| 809 | currentSettingsValue := reflect.ValueOf(currentSettings) |
| 810 | currentSettingsType := currentSettingsValue.Type() |
| 811 | jsonToFieldMap := make(map[string]string) |
| 812 | for i := 0; i < currentSettingsType.NumField(); i++ { |
| 813 | field := currentSettingsType.Field(i) |
| 814 | jsonTag := strings.Split(field.Tag.Get("json"), ",")[0] |
| 815 | if jsonTag != "" { |
| 816 | jsonToFieldMap[jsonTag] = field.Name |
| 817 | } |
| 818 | } |
| 819 | |
| 820 | groupConfigType := reflect.TypeOf(models.GroupConfig{}) |
| 821 | var options []ConfigOption |
| 822 | for i := 0; i < groupConfigType.NumField(); i++ { |
| 823 | field := groupConfigType.Field(i) |
| 824 | jsonTag := field.Tag.Get("json") |
| 825 | key := strings.Split(jsonTag, ",")[0] |
| 826 | if key == "" || key == "-" { |
| 827 | continue |
| 828 | } |
| 829 | |
| 830 | definition, ok := defMap[key] |
| 831 | if !ok { |
| 832 | continue |
| 833 | } |
| 834 | |
| 835 | var defaultValue any |
| 836 | if fieldName, ok := jsonToFieldMap[key]; ok { |
| 837 | defaultValue = currentSettingsValue.FieldByName(fieldName).Interface() |
| 838 | } |
| 839 | |
| 840 | options = append(options, ConfigOption{ |
| 841 | Key: key, |
| 842 | Name: definition.Name, |
| 843 | Description: definition.Description, |
| 844 | DefaultValue: defaultValue, |
| 845 | }) |
| 846 | } |
| 847 | |
| 848 | return options, nil |
| 849 | } |
| 850 | |
| 851 | // validateAndCleanConfig verifies GroupConfig overrides. |
| 852 | func (s *GroupService) validateAndCleanConfig(configMap map[string]any) (map[string]any, error) { |
nothing calls this directly
no test coverage detected