GetUserGroup gets group from Redis first, falls back to DB if needed
(id int, fromDB bool)
| 828 | |
| 829 | // GetUserGroup gets group from Redis first, falls back to DB if needed |
| 830 | func GetUserGroup(id int, fromDB bool) (group string, err error) { |
| 831 | defer func() { |
| 832 | // Update Redis cache asynchronously on successful DB read |
| 833 | if shouldUpdateRedis(fromDB, err) { |
| 834 | gopool.Go(func() { |
| 835 | if err := updateUserGroupCache(id, group); err != nil { |
| 836 | common.SysLog("failed to update user group cache: " + err.Error()) |
| 837 | } |
| 838 | }) |
| 839 | } |
| 840 | }() |
| 841 | if !fromDB && common.RedisEnabled { |
| 842 | group, err := getUserGroupCache(id) |
| 843 | if err == nil { |
| 844 | return group, nil |
| 845 | } |
| 846 | // Don't return error - fall through to DB |
| 847 | } |
| 848 | fromDB = true |
| 849 | err = DB.Model(&User{}).Where("id = ?", id).Select(commonGroupCol).Find(&group).Error |
| 850 | if err != nil { |
| 851 | return "", err |
| 852 | } |
| 853 | |
| 854 | return group, nil |
| 855 | } |
| 856 | |
| 857 | // GetUserSetting gets setting from Redis first, falls back to DB if needed |
| 858 | func GetUserSetting(id int, fromDB bool) (settingMap dto.UserSetting, err error) { |
no test coverage detected