74 lines
2.4 KiB
Go
74 lines
2.4 KiB
Go
package repository
|
||
|
||
import (
|
||
"context"
|
||
|
||
"git.kirlllll.ru/volontery/backend/internal/database"
|
||
)
|
||
|
||
// AuthRepository предоставляет методы для работы с аутентификацией
|
||
type AuthRepository struct {
|
||
queries *database.Queries
|
||
}
|
||
|
||
// NewAuthRepository создает новый AuthRepository
|
||
func NewAuthRepository(queries *database.Queries) *AuthRepository {
|
||
return &AuthRepository{queries: queries}
|
||
}
|
||
|
||
// CreateRefreshToken создает новый refresh токен
|
||
func (r *AuthRepository) CreateRefreshToken(ctx context.Context, params database.CreateRefreshTokenParams) (*database.RefreshToken, error) {
|
||
result, err := r.queries.CreateRefreshToken(ctx, params)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &result, nil
|
||
}
|
||
|
||
// GetRefreshToken получает refresh токен
|
||
func (r *AuthRepository) GetRefreshToken(ctx context.Context, token string) (*database.RefreshToken, error) {
|
||
result, err := r.queries.GetRefreshToken(ctx, token)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &result, nil
|
||
}
|
||
|
||
// RevokeRefreshToken отзывает refresh токен
|
||
func (r *AuthRepository) RevokeRefreshToken(ctx context.Context, id int64) error {
|
||
return r.queries.RevokeRefreshToken(ctx, id)
|
||
}
|
||
|
||
// RevokeAllUserTokens отзывает все токены пользователя
|
||
func (r *AuthRepository) RevokeAllUserTokens(ctx context.Context, userID int64) error {
|
||
return r.queries.RevokeAllUserTokens(ctx, userID)
|
||
}
|
||
|
||
// CreateUserSession создает новую сессию
|
||
func (r *AuthRepository) CreateUserSession(ctx context.Context, params database.CreateUserSessionParams) (*database.UserSession, error) {
|
||
result, err := r.queries.CreateUserSession(ctx, params)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &result, nil
|
||
}
|
||
|
||
// GetUserSession получает сессию по токену
|
||
func (r *AuthRepository) GetUserSession(ctx context.Context, sessionToken string) (*database.UserSession, error) {
|
||
result, err := r.queries.GetUserSession(ctx, sessionToken)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &result, nil
|
||
}
|
||
|
||
// UpdateSessionActivity обновляет время активности сессии
|
||
func (r *AuthRepository) UpdateSessionActivity(ctx context.Context, id int64) error {
|
||
return r.queries.UpdateSessionActivity(ctx, id)
|
||
}
|
||
|
||
// InvalidateUserSession удаляет сессию
|
||
func (r *AuthRepository) InvalidateUserSession(ctx context.Context, id int64) error {
|
||
return r.queries.InvalidateUserSession(ctx, id)
|
||
}
|