add service
All checks were successful
Deploy Smart Search Backend / deploy (push) Successful in 1m47s

This commit is contained in:
vallyenfail
2026-01-20 19:02:06 +03:00
parent f8db0fd9e6
commit 8b9554720d
15 changed files with 2109 additions and 38 deletions

View File

@@ -96,6 +96,32 @@ func (r *sessionRepository) UpdateAccessToken(ctx context.Context, refreshToken,
return nil
}
func (r *sessionRepository) UpdateTokens(ctx context.Context, oldRefreshToken, newAccessToken, newRefreshToken string) error {
query := r.qb.Update("sessions").
Set("access_token", newAccessToken).
Set("refresh_token", newRefreshToken).
Where(sq.And{
sq.Eq{"refresh_token": oldRefreshToken},
sq.Expr("revoked_at IS NULL"),
})
sqlQuery, args, err := query.ToSql()
if err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to build query", err)
}
result, err := r.pool.Exec(ctx, sqlQuery, args...)
if err != nil {
return errs.NewInternalError(errs.DatabaseError, "failed to update tokens", err)
}
if result.RowsAffected() == 0 {
return errs.NewBusinessError(errs.RefreshInvalid, "refresh token is invalid or already used")
}
return nil
}
func (r *sessionRepository) Revoke(ctx context.Context, refreshToken string) error {
query := r.qb.Update("sessions").
Set("revoked_at", time.Now()).