20251209
This commit is contained in:
52
archive/bbs-go-active/server/internal/cache/user_token_cache.go
vendored
Normal file
52
archive/bbs-go-active/server/internal/cache/user_token_cache.go
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user