53 lines
994 B
Go
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)
|
|
}
|