Files
common-server-public/bbs-go/server/internal/cache/user_token_cache.go
2025-03-03 17:43:50 +08:00

53 lines
994 B
Go

package cache
import (
"errors"
"time"
"github.com/goburrow/cache"
"github.com/mlogclub/simple/sqls"
"bbs-go/internal/models"
"bbs-go/internal/repositories"
)
var UserTokenCache = newUserTokenCache()
type userTokenCache struct {
cache cache.LoadingCache
}
func newUserTokenCache() *userTokenCache {
return &userTokenCache{
cache: cache.NewLoadingCache(
func(key cache.Key) (value cache.Value, e error) {
value = repositories.UserTokenRepository.GetByToken(sqls.DB(), key.(string))
if value == nil {
e = errors.New("数据不存在")
}
return
},
cache.WithMaximumSize(1000),
cache.WithExpireAfterAccess(60*time.Minute),
),
}
}
func (c *userTokenCache) Get(token string) *models.UserToken {
if len(token) == 0 {
return nil
}
val, err := c.cache.Get(token)
if err != nil {
return nil
}
if val != nil {
return val.(*models.UserToken)
}
return nil
}
func (c *userTokenCache) Invalidate(token string) {
c.cache.Invalidate(token)
}