Skip to content

Commit

Permalink
refactor: Optimize user caching and token retrieval methods
Browse files Browse the repository at this point in the history
  • Loading branch information
Calcium-Ion committed Feb 19, 2025
1 parent 0907a07 commit b184750
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 8 deletions.
2 changes: 1 addition & 1 deletion controller/pricing.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func GetPricing(c *gin.Context) {
}
var group string
if exists {
user, err := model.GetUserById(userId.(int), false)
user, err := model.GetUserCache(userId.(int))
if err == nil {
group = user.Group
}
Expand Down
2 changes: 1 addition & 1 deletion controller/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ func GetUserModels(c *gin.Context) {
if err != nil {
id = c.GetInt("id")
}
user, err := model.GetUserById(id, true)
user, err := model.GetUserCache(id)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"success": false,
Expand Down
2 changes: 1 addition & 1 deletion model/token_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func cacheSetTokenField(key string, field string, value string) error {
func cacheGetTokenByKey(key string) (*Token, error) {
hmacKey := common.GenerateHMAC(key)
if !common.RedisEnabled {
return nil, nil
return nil, fmt.Errorf("redis is not enabled")
}
var token Token
err := common.RedisHGetObj(fmt.Sprintf("token:%s", hmacKey), &token)
Expand Down
4 changes: 2 additions & 2 deletions model/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ type User struct {
Setting string `json:"setting" gorm:"type:text;column:setting"`
}

func (user *User) ToBaseUser() UserBase {
cache := UserBase{
func (user *User) ToBaseUser() *UserBase {
cache := &UserBase{
Id: user.Id,
Group: user.Group,
Quota: user.Quota,
Expand Down
15 changes: 14 additions & 1 deletion model/user_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func GetUserCache(userId int) (userCache *UserBase, err error) {
}()

// Try getting from Redis first
err = common.RedisHGetObj(getUserCacheKey(userId), &userCache)
userCache, err = cacheGetUserBase(userId)
if err == nil {
return userCache, nil
}
Expand All @@ -105,6 +105,19 @@ func GetUserCache(userId int) (userCache *UserBase, err error) {
return userCache, nil
}

func cacheGetUserBase(userId int) (*UserBase, error) {
if !common.RedisEnabled {
return nil, fmt.Errorf("redis is not enabled")
}
var userCache UserBase
// Try getting from Redis first
err := common.RedisHGetObj(getUserCacheKey(userId), &userCache)
if err != nil {
return nil, err
}
return &userCache, nil
}

// Add atomic quota operations using hash fields
func cacheIncrUserQuota(userId int, delta int64) error {
if !common.RedisEnabled {
Expand Down
2 changes: 1 addition & 1 deletion service/quota.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ func PreConsumeTokenQuota(relayInfo *relaycommon.RelayInfo, quota int) error {
//if relayInfo.TokenUnlimited {
// return nil
//}
token, err := model.GetTokenById(relayInfo.TokenId)
token, err := model.GetTokenByKey(relayInfo.TokenKey, false)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion service/user_notify.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

func NotifyRootUser(t string, subject string, content string) {
user := model.GetRootUser().ToBaseUser()
_ = NotifyUser(&user, dto.NewNotify(t, subject, content, nil))
_ = NotifyUser(user, dto.NewNotify(t, subject, content, nil))
}

func NotifyUser(user *model.UserBase, data dto.Notify) error {
Expand Down

0 comments on commit b184750

Please sign in to comment.