GetUsernameById gets username from Redis first, falls back to DB if needed
(id int, fromDB bool)
| 780 | |
| 781 | // GetUsernameById gets username from Redis first, falls back to DB if needed |
| 782 | func GetUsernameById(id int, fromDB bool) (username string, err error) { |
| 783 | defer func() { |
| 784 | // Update Redis cache asynchronously on successful DB read |
| 785 | if shouldUpdateRedis(fromDB, err) { |
| 786 | gopool.Go(func() { |
| 787 | if err := updateUserNameCache(id, username); err != nil { |
| 788 | common.SysError("failed to update user name cache: " + err.Error()) |
| 789 | } |
| 790 | }) |
| 791 | } |
| 792 | }() |
| 793 | if !fromDB && common.RedisEnabled { |
| 794 | username, err := getUserNameCache(id) |
| 795 | if err == nil { |
| 796 | return username, nil |
| 797 | } |
| 798 | // Don't return error - fall through to DB |
| 799 | } |
| 800 | fromDB = true |
| 801 | err = DB.Model(&User{}).Where("id = ?", id).Select("username").Find(&username).Error |
| 802 | if err != nil { |
| 803 | return "", err |
| 804 | } |
| 805 | |
| 806 | return username, nil |
| 807 | } |
| 808 | |
| 809 | func IsLinuxDOIdAlreadyTaken(linuxDOId string) bool { |
| 810 | var user User |
no test coverage detected