add service
Some checks failed
Deploy Smart Search Backend / deploy (push) Failing after 1m54s

This commit is contained in:
vallyenfail
2026-01-17 20:41:37 +03:00
parent 635acd13ac
commit e2968722ed
70 changed files with 7542 additions and 463 deletions

View File

@@ -5,8 +5,8 @@ import (
"errors"
"time"
"smart-search-back/internal/model"
errs "smart-search-back/pkg/errors"
"git.techease.ru/Smart-search/smart-search-back/internal/model"
errs "git.techease.ru/Smart-search/smart-search-back/pkg/errors"
sq "github.com/Masterminds/squirrel"
"github.com/jackc/pgx/v5"
@@ -114,6 +114,47 @@ func (r *sessionRepository) Revoke(ctx context.Context, refreshToken string) err
return nil
}
func (r *sessionRepository) RevokeByAccessToken(ctx context.Context, accessToken string) error {
query := r.qb.Update("sessions").
Set("revoked_at", time.Now()).
Where(sq.Eq{"access_token": accessToken})
sqlQuery, args, err := query.ToSql()
if err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to build query", err)
}
_, err = r.pool.Exec(ctx, sqlQuery, args...)
if err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to revoke session", err)
}
return nil
}
func (r *sessionRepository) IsAccessTokenValid(ctx context.Context, accessToken string) (bool, error) {
query := r.qb.Select("COUNT(*)").
From("sessions").
Where(sq.And{
sq.Eq{"access_token": accessToken},
sq.Expr("revoked_at IS NULL"),
sq.Expr("expires_at > now()"),
})
sqlQuery, args, err := query.ToSql()
if err != nil {
return false, errs.NewInternalError(errs.DatabaseError, "failed to build query", err)
}
var count int
err = r.pool.QueryRow(ctx, sqlQuery, args...).Scan(&count)
if err != nil {
return false, errs.NewInternalError(errs.DatabaseError, "failed to check token validity", err)
}
return count > 0, nil
}
func (r *sessionRepository) DeleteExpired(ctx context.Context) (int, error) {
query := r.qb.Delete("sessions").Where(sq.Or{
sq.Expr("expires_at < now()"),