aboutsummaryrefslogtreecommitdiffstats
path: root/modules/system/user_setting.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system/user_setting.go')
-rw-r--r--modules/system/user_setting.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/modules/system/user_setting.go b/modules/system/user_setting.go
new file mode 100644
index 0000000000..eaf146c08d
--- /dev/null
+++ b/modules/system/user_setting.go
@@ -0,0 +1,34 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package system
+
+import (
+ "fmt"
+
+ "code.gitea.io/gitea/models/user"
+ "code.gitea.io/gitea/modules/cache"
+)
+
+func genUserKey(userID int64, key string) string {
+ return fmt.Sprintf("user_%d.setting.%s", userID, key)
+}
+
+// GetUserSetting returns the user setting value via the key
+func GetUserSetting(userID int64, key string) (string, error) {
+ return cache.GetString(genUserKey(userID, key), func() (string, error) {
+ res, err := user.GetSetting(userID, key)
+ if err != nil {
+ return "", err
+ }
+ return res.SettingValue, nil
+ })
+}
+
+// SetUserSetting sets the user setting value
+func SetUserSetting(userID int64, key, value string) error {
+ cache.Remove(genUserKey(userID, key))
+
+ return user.SetUserSetting(userID, key, value)
+}