feat: add geofile update schedule settings infrastructure

This commit is contained in:
root 2026-04-28 10:12:04 +08:00
parent b930ec71f9
commit 9bb4cc8d7f
2 changed files with 46 additions and 16 deletions

View file

@ -127,6 +127,11 @@ type AllSetting struct {
BackupFrequency string `json:"backupFrequency" form:"backupFrequency"`
BackupHour int `json:"backupHour" form:"backupHour"`
BackupMaxCount int `json:"backupMaxCount" form:"backupMaxCount"`
// Geofile update schedule settings
GeofileUpdateEnabled bool `json:"geofileUpdateEnabled" form:"geofileUpdateEnabled"`
GeofileUpdateFrequency string `json:"geofileUpdateFrequency" form:"geofileUpdateFrequency"`
GeofileUpdateHour int `json:"geofileUpdateHour" form:"geofileUpdateHour"`
}
// CheckValid validates all settings in the AllSetting struct, checking IP addresses, ports, SSL certificates, and other configuration values.

View file

@ -133,6 +133,11 @@ var defaultValueMap = map[string]string{
"backupFrequency": "daily",
"backupHour": "3",
"backupMaxCount": "10",
// Geofile update schedule settings
"geofileUpdateEnabled": "false",
"geofileUpdateFrequency": "daily",
"geofileUpdateHour": "4",
}
// settingGroups defines the nested JSON structure for on-disk settings.
@ -259,6 +264,11 @@ var settingGroups = map[string]map[string]string{
"hour": "backupHour",
"maxCount": "backupMaxCount",
},
"geofileUpdate": {
"enabled": "geofileUpdateEnabled",
"frequency": "geofileUpdateFrequency",
"hour": "geofileUpdateHour",
},
}
var legacySettingGroups = map[string]map[string]string{
@ -1166,6 +1176,18 @@ func (s *SettingService) GetBackupMaxCount() (int, error) {
return s.getInt("backupMaxCount")
}
func (s *SettingService) GetGeofileUpdateEnabled() (bool, error) {
return s.getBool("geofileUpdateEnabled")
}
func (s *SettingService) GetGeofileUpdateFrequency() (string, error) {
return s.getString("geofileUpdateFrequency")
}
func (s *SettingService) GetGeofileUpdateHour() (int, error) {
return s.getInt("geofileUpdateHour")
}
func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting, presentKeys map[string]struct{}) error {
if err := allSetting.CheckValid(); err != nil {
return err
@ -1249,6 +1271,9 @@ func (s *SettingService) GetDefaultSettings(host string) (any, error) {
"remarkModel": func() (any, error) { return s.GetRemarkModel() },
"datepicker": func() (any, error) { return s.GetDatepicker() },
"ipLimitEnable": func() (any, error) { return s.GetIpLimitEnable() },
"geofileUpdateEnabled": func() (any, error) { return s.GetGeofileUpdateEnabled() },
"geofileUpdateFrequency": func() (any, error) { return s.GetGeofileUpdateFrequency() },
"geofileUpdateHour": func() (any, error) { return s.GetGeofileUpdateHour() },
}
result := make(map[string]any)