@@ -14,8 +14,9 @@ import (
1414type SettingRepo struct {}
1515
1616var (
17- settingCache = cache .New (5 * time .Minute , 10 * time .Minute )
18- settingCacheTTL = 5 * time .Minute
17+ settingCache = cache .New (5 * time .Minute , 10 * time .Minute )
18+ settingDefaultTTL = 5 * time .Minute
19+ settingCriticalTTL = 5 * time .Second
1920)
2021
2122type ISettingRepo interface {
@@ -32,6 +33,14 @@ func NewISettingRepo() ISettingRepo {
3233 return & SettingRepo {}
3334}
3435
36+ func loadSettingTTL (key string ) time.Duration {
37+ switch key {
38+ case "AllowIPs" , "BindDomain" , "SSL" :
39+ return settingCriticalTTL
40+ }
41+ return settingDefaultTTL
42+ }
43+
3544func (u * SettingRepo ) List (opts ... global.DBOption ) ([]model.Setting , error ) {
3645 var settings []model.Setting
3746 db := global .DB .Model (& model.Setting {})
@@ -50,7 +59,7 @@ func (u *SettingRepo) Create(key, value string) error {
5059 if err := global .DB .Create (setting ).Error ; err != nil {
5160 return err
5261 }
53- settingCache .Set (key , value , settingCacheTTL )
62+ settingCache .Set (key , value , loadSettingTTL ( key ) )
5463 return nil
5564}
5665
@@ -63,7 +72,7 @@ func (u *SettingRepo) Get(opts ...global.DBOption) (model.Setting, error) {
6372
6473 err := db .First (& settings ).Error
6574 if err == nil && settings .Key != "" {
66- settingCache .Set (settings .Key , settings .Value , settingCacheTTL )
75+ settingCache .Set (settings .Key , settings .Value , loadSettingTTL ( settings . Key ) )
6776 }
6877 return settings , err
6978}
@@ -77,15 +86,15 @@ func (u *SettingRepo) GetValueByKey(key string) (string, error) {
7786 if err := global .DB .Model (& model.Setting {}).Where ("key = ?" , key ).First (& setting ).Error ; err != nil {
7887 return "" , err
7988 }
80- settingCache .Set (key , setting .Value , settingCacheTTL )
89+ settingCache .Set (key , setting .Value , loadSettingTTL ( key ) )
8190 return setting .Value , nil
8291}
8392
8493func (u * SettingRepo ) Update (key , value string ) error {
8594 if err := global .DB .Model (& model.Setting {}).Where ("key = ?" , key ).Updates (map [string ]interface {}{"value" : value }).Error ; err != nil {
8695 return err
8796 }
88- settingCache .Set (key , value , settingCacheTTL )
97+ settingCache .Set (key , value , loadSettingTTL ( key ) )
8998 return nil
9099}
91100
@@ -97,15 +106,15 @@ func (u *SettingRepo) UpdateOrCreate(key, value string) error {
97106 if err := global .DB .Create (& model.Setting {Key : key , Value : value }).Error ; err != nil {
98107 return err
99108 }
100- settingCache .Set (key , value , settingCacheTTL )
109+ settingCache .Set (key , value , loadSettingTTL ( key ) )
101110 return nil
102111 }
103112 return result .Error
104113 }
105114 if err := global .DB .Model (& setting ).UpdateColumn ("value" , value ).Error ; err != nil {
106115 return err
107116 }
108- settingCache .Set (key , value , settingCacheTTL )
117+ settingCache .Set (key , value , loadSettingTTL ( key ) )
109118 return nil
110119}
111120
@@ -116,6 +125,6 @@ func (u *SettingRepo) DefaultMenu() error {
116125 Update ("value" , menus ).Error ; err != nil {
117126 return err
118127 }
119- settingCache .Set ("HideMenu" , menus , settingCacheTTL )
128+ settingCache .Set ("HideMenu" , menus , settingDefaultTTL )
120129 return nil
121130}
0 commit comments