From 92b297251a429f7fce17b47feae4cc6de061cfc1 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 26 Apr 2026 19:10:25 +0800 Subject: [PATCH] feat: add backup config fields to entity and setting service --- web/entity/entity.go | 6 ++++++ web/service/setting.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/web/entity/entity.go b/web/entity/entity.go index 9a3541e0..276279ee 100644 --- a/web/entity/entity.go +++ b/web/entity/entity.go @@ -121,6 +121,12 @@ type AllSetting struct { // Registration settings TurnstileSiteKey string `json:"turnstileSiteKey" form:"turnstileSiteKey"` TurnstileSecretKey string `json:"-" form:"-"` // server-side only, never sent to frontend + + // Backup settings + BackupEnabled bool `json:"backupEnabled" form:"backupEnabled"` + BackupFrequency string `json:"backupFrequency" form:"backupFrequency"` + BackupHour int `json:"backupHour" form:"backupHour"` + BackupMaxCount int `json:"backupMaxCount" form:"backupMaxCount"` } // CheckValid validates all settings in the AllSetting struct, checking IP addresses, ports, SSL certificates, and other configuration values. diff --git a/web/service/setting.go b/web/service/setting.go index 39d1ba57..86511b1f 100644 --- a/web/service/setting.go +++ b/web/service/setting.go @@ -127,6 +127,12 @@ var defaultValueMap = map[string]string{ "nodeId": "", "syncInterval": "30", "trafficFlushInterval": "10", + + // Backup settings + "backupEnabled": "false", + "backupFrequency": "daily", + "backupHour": "3", + "backupMaxCount": "10", } // settingGroups defines the nested JSON structure for on-disk settings. @@ -247,6 +253,12 @@ var settingGroups = map[string]map[string]string{ "syncInterval": "syncInterval", "trafficFlushInterval": "trafficFlushInterval", }, + "backup": { + "enabled": "backupEnabled", + "frequency": "backupFrequency", + "hour": "backupHour", + "maxCount": "backupMaxCount", + }, } var legacySettingGroups = map[string]map[string]string{ @@ -1138,6 +1150,11 @@ func (s *SettingService) SetTurnstileSecretKey(value string) error { return s.setString("turnstileSecretKey", value) } +func (s *SettingService) GetBackupEnabled() (bool, error) { return s.getBool("backupEnabled") } +func (s *SettingService) GetBackupFrequency() (string, error) { return s.getString("backupFrequency") } +func (s *SettingService) GetBackupHour() (int, error) { return s.getInt("backupHour") } +func (s *SettingService) GetBackupMaxCount() (int, error) { return s.getInt("backupMaxCount") } + func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting, presentKeys map[string]struct{}) error { if err := allSetting.CheckValid(); err != nil { return err