|
|
package model |
|
|
|
|
|
import ( |
|
|
"fmt" |
|
|
"time" |
|
|
|
|
|
"github.com/QuantumNous/new-api/common" |
|
|
"github.com/QuantumNous/new-api/constant" |
|
|
) |
|
|
|
|
|
func cacheSetToken(token Token) error { |
|
|
key := common.GenerateHMAC(token.Key) |
|
|
token.Clean() |
|
|
err := common.RedisHSetObj(fmt.Sprintf("token:%s", key), &token, time.Duration(common.RedisKeyCacheSeconds())*time.Second) |
|
|
if err != nil { |
|
|
return err |
|
|
} |
|
|
return nil |
|
|
} |
|
|
|
|
|
func cacheDeleteToken(key string) error { |
|
|
key = common.GenerateHMAC(key) |
|
|
err := common.RedisDelKey(fmt.Sprintf("token:%s", key)) |
|
|
if err != nil { |
|
|
return err |
|
|
} |
|
|
return nil |
|
|
} |
|
|
|
|
|
func cacheIncrTokenQuota(key string, increment int64) error { |
|
|
key = common.GenerateHMAC(key) |
|
|
err := common.RedisHIncrBy(fmt.Sprintf("token:%s", key), constant.TokenFiledRemainQuota, increment) |
|
|
if err != nil { |
|
|
return err |
|
|
} |
|
|
return nil |
|
|
} |
|
|
|
|
|
func cacheDecrTokenQuota(key string, decrement int64) error { |
|
|
return cacheIncrTokenQuota(key, -decrement) |
|
|
} |
|
|
|
|
|
func cacheSetTokenField(key string, field string, value string) error { |
|
|
key = common.GenerateHMAC(key) |
|
|
err := common.RedisHSetField(fmt.Sprintf("token:%s", key), field, value) |
|
|
if err != nil { |
|
|
return err |
|
|
} |
|
|
return nil |
|
|
} |
|
|
|
|
|
|
|
|
func cacheGetTokenByKey(key string) (*Token, error) { |
|
|
hmacKey := common.GenerateHMAC(key) |
|
|
if !common.RedisEnabled { |
|
|
return nil, fmt.Errorf("redis is not enabled") |
|
|
} |
|
|
var token Token |
|
|
err := common.RedisHGetObj(fmt.Sprintf("token:%s", hmacKey), &token) |
|
|
if err != nil { |
|
|
return nil, err |
|
|
} |
|
|
token.Key = key |
|
|
return &token, nil |
|
|
} |
|
|
|