@@ -31,8 +31,8 @@ func init() {
31
31
db .RegisterModel (new (Setting ))
32
32
}
33
33
34
- // GetSettings returns specific settings from user
35
- func GetSettings (uid int64 , keys []string ) (map [string ]* Setting , error ) {
34
+ // GetUserSettings returns specific settings from user
35
+ func GetUserSettings (uid int64 , keys []string ) (map [string ]* Setting , error ) {
36
36
settings := make ([]* Setting , 0 , len (keys ))
37
37
if err := db .GetEngine (db .DefaultContext ).
38
38
Where ("user_id=?" , uid ).
@@ -62,21 +62,53 @@ func GetUserAllSettings(uid int64) (map[string]*Setting, error) {
62
62
return settingsMap , nil
63
63
}
64
64
65
- // DeleteSetting deletes a specific setting for a user
66
- func DeleteSetting (setting * Setting ) error {
67
- _ , err := db .GetEngine (db .DefaultContext ).Delete (setting )
65
+ func validateUserSettingKey (key string ) error {
66
+ if len (key ) == 0 {
67
+ return fmt .Errorf ("setting key must be set" )
68
+ }
69
+ if strings .ToLower (key ) != key {
70
+ return fmt .Errorf ("setting key should be lowercase" )
71
+ }
72
+ return nil
73
+ }
74
+
75
+ // GetUserSetting gets a specific setting for a user
76
+ func GetUserSetting (userID int64 , key string , def ... string ) (string , error ) {
77
+ if err := validateUserSettingKey (key ); err != nil {
78
+ return "" , err
79
+ }
80
+ setting := & Setting {UserID : userID , SettingKey : key }
81
+ has , err := db .GetEngine (db .DefaultContext ).Get (setting )
82
+ if err != nil {
83
+ return "" , err
84
+ }
85
+ if ! has {
86
+ if len (def ) == 1 {
87
+ return def [0 ], nil
88
+ }
89
+ return "" , nil
90
+ }
91
+ return setting .SettingValue , nil
92
+ }
93
+
94
+ // DeleteUserSetting deletes a specific setting for a user
95
+ func DeleteUserSetting (userID int64 , key string ) error {
96
+ if err := validateUserSettingKey (key ); err != nil {
97
+ return err
98
+ }
99
+ _ , err := db .GetEngine (db .DefaultContext ).Delete (& Setting {UserID : userID , SettingKey : key })
68
100
return err
69
101
}
70
102
71
- // SetSetting updates a users' setting for a specific key
72
- func SetSetting ( setting * Setting ) error {
73
- if strings . ToLower ( setting . SettingKey ) != setting . SettingKey {
74
- return fmt . Errorf ( "setting key should be lowercase" )
103
+ // SetUserSetting updates a users' setting for a specific key
104
+ func SetUserSetting ( userID int64 , key , value string ) error {
105
+ if err := validateUserSettingKey ( key ); err != nil {
106
+ return err
75
107
}
76
- return upsertSettingValue ( setting . UserID , setting . SettingKey , setting . SettingValue )
108
+ return upsertUserSettingValue ( userID , key , value )
77
109
}
78
110
79
- func upsertSettingValue (userID int64 , key , value string ) error {
111
+ func upsertUserSettingValue (userID int64 , key , value string ) error {
80
112
return db .WithTx (func (ctx context.Context ) error {
81
113
e := db .GetEngine (ctx )
82
114
0 commit comments