GetUserGroup gets group from Redis first, falls back to DB if needed
(id int, fromDB bool)
| 605 | |
| 606 | // GetUserGroup gets group from Redis first, falls back to DB if needed |
| 607 | func GetUserGroup(id int, fromDB bool) (group string, err error) { |
| 608 | defer func() { |
| 609 | // Update Redis cache asynchronously on successful DB read |
| 610 | if shouldUpdateRedis(fromDB, err) { |
| 611 | gopool.Go(func() { |
| 612 | if err := updateUserGroupCache(id, group); err != nil { |
| 613 | common.SysError("failed to update user group cache: " + err.Error()) |
| 614 | } |
| 615 | }) |
| 616 | } |
| 617 | }() |
| 618 | if !fromDB && common.RedisEnabled { |
| 619 | group, err := getUserGroupCache(id) |
| 620 | if err == nil { |
| 621 | return group, nil |
| 622 | } |
| 623 | // Don't return error - fall through to DB |
| 624 | } |
| 625 | fromDB = true |
| 626 | err = DB.Model(&User{}).Where("id = ?", id).Select(commonGroupCol).Find(&group).Error |
| 627 | if err != nil { |
| 628 | return "", err |
| 629 | } |
| 630 | |
| 631 | return group, nil |
| 632 | } |
| 633 | |
| 634 | // GetUserSetting gets setting from Redis first, falls back to DB if needed |
| 635 | func GetUserSetting(id int, fromDB bool) (settingMap dto.UserSetting, err error) { |
no test coverage detected