Handlers, DB, Cache

This commit is contained in:
2026-03-10 19:17:43 +03:00
parent e56b1f1305
commit 968c030939
23 changed files with 566 additions and 34 deletions

39
internal/service/cache/cache_service.go vendored Normal file
View File

@@ -0,0 +1,39 @@
package cache
import (
"time"
"github.com/jellydator/ttlcache/v3"
"payouts/internal/service/database/orm"
)
type cacheService struct {
cache *ttlcache.Cache[string, orm.User]
}
func NewSessionCache(ttl time.Duration) (Service, error) {
return &cacheService{
cache: ttlcache.New(ttlcache.WithTTL[string, orm.User](ttl)),
}, nil
}
// PutSession implements [Service].
func (c *cacheService) PutSession(sessionID string, user orm.User) {
c.cache.Set(sessionID, user, ttlcache.DefaultTTL)
}
// GetUserFromSession implements [Service].
func (c *cacheService) GetSession(sessionId string) (orm.User, error) {
if !c.cache.Has(sessionId) {
return orm.User{}, NoSessionFound
}
cachedItem := c.cache.Get(sessionId)
return cachedItem.Value(), nil
}
// StartBackground implements [Service].
func (c *cacheService) StartBackground() {
c.cache.Start()
}