Files
di-container/internal/repository/session.go
T

34 lines
1.1 KiB
Go
Raw Normal View History

2026-04-13 08:14:09 +03:00
package repository
import "log/slog"
// SessionDB — интерфейс базы данных, который нужен SessionRepo.
// Включает BeginTx — для атомарного создания/удаления сессий.
type SessionDB interface {
Query(query string) error
Exec(query string) error
BeginTx() error
}
// SessionCache — интерфейс кэша, который нужен SessionRepo.
type SessionCache interface {
Get(key string) (string, error)
Set(key, value string) error
}
// SessionRepo — интерфейс репозитория сессий.
// Структура неэкспортируемая — создать объект можно только через NewSessionRepo.
type SessionRepo interface{}
// sessionRepo — репозиторий сессий.
type sessionRepo struct {
db SessionDB
cache SessionCache
}
// NewSessionRepo создаёт репозиторий сессий.
func NewSessionRepo(db SessionDB, cache SessionCache) SessionRepo {
slog.Info("репозиторий сессий создан")
return &sessionRepo{db: db, cache: cache}
}