More queries forrefresh token sqlc files.

This commit is contained in:
2026-04-30 08:37:10 +02:00
parent 502b2abb2b
commit 96dd5c863e
3 changed files with 83 additions and 6 deletions
+4 -1
View File
@@ -9,15 +9,18 @@ import (
)
type Querier interface {
CountUserRefreshTokens(ctx context.Context, userID int64) (int64, error)
CreateRefreshToken(ctx context.Context, arg CreateRefreshTokenParams) (RefreshToken, error)
CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
DeleteAllUserRefreshTokens(ctx context.Context, userID int64) error
DeleteRefreshToken(ctx context.Context, tokenHash string) error
DeleteOldestRefreshToken(ctx context.Context, userID int64) error
DeleteRefreshToken(ctx context.Context, arg DeleteRefreshTokenParams) error
DeleteUser(ctx context.Context, arg DeleteUserParams) error
GetRefreshToken(ctx context.Context, tokenHash string) (RefreshToken, error)
GetUserByEmail(ctx context.Context, dollar_1 string) (User, error)
GetUserById(ctx context.Context, id int64) (User, error)
GetUserRefreshTokens(ctx context.Context, userID int64) ([]RefreshToken, error)
GetValidRefreshToken(ctx context.Context, tokenHash string) (GetValidRefreshTokenRow, error)
ListUsers(ctx context.Context) ([]User, error)
UpdateUser(ctx context.Context, arg UpdateUserParams) error
}
+57 -4
View File
@@ -11,6 +11,18 @@ import (
"github.com/jackc/pgx/v5/pgtype"
)
const countUserRefreshTokens = `-- name: CountUserRefreshTokens :one
SELECT count(*) FROM refresh_tokens
WHERE user_id = $1
`
func (q *Queries) CountUserRefreshTokens(ctx context.Context, userID int64) (int64, error) {
row := q.db.QueryRow(ctx, countUserRefreshTokens, userID)
var count int64
err := row.Scan(&count)
return count, err
}
const createRefreshToken = `-- name: CreateRefreshToken :one
INSERT INTO refresh_tokens (user_id, token_hash, expires_at)
VALUES ($1, $2, $3)
@@ -46,13 +58,34 @@ func (q *Queries) DeleteAllUserRefreshTokens(ctx context.Context, userID int64)
return err
}
const deleteRefreshToken = `-- name: DeleteRefreshToken :exec
const deleteOldestRefreshToken = `-- name: DeleteOldestRefreshToken :exec
DELETE FROM refresh_tokens
WHERE token_hash = $1
WHERE id = (
SELECT id
FROM refresh_tokens rt
WHERE rt.user_id = $1
ORDER BY rt.created_at ASC
LIMIT 1
)
`
func (q *Queries) DeleteRefreshToken(ctx context.Context, tokenHash string) error {
_, err := q.db.Exec(ctx, deleteRefreshToken, tokenHash)
func (q *Queries) DeleteOldestRefreshToken(ctx context.Context, userID int64) error {
_, err := q.db.Exec(ctx, deleteOldestRefreshToken, userID)
return err
}
const deleteRefreshToken = `-- name: DeleteRefreshToken :exec
DELETE FROM refresh_tokens
WHERE token_hash = $1 and user_id = $2
`
type DeleteRefreshTokenParams struct {
TokenHash string `json:"token_hash"`
UserID int64 `json:"user_id"`
}
func (q *Queries) DeleteRefreshToken(ctx context.Context, arg DeleteRefreshTokenParams) error {
_, err := q.db.Exec(ctx, deleteRefreshToken, arg.TokenHash, arg.UserID)
return err
}
@@ -104,3 +137,23 @@ func (q *Queries) GetUserRefreshTokens(ctx context.Context, userID int64) ([]Ref
}
return items, nil
}
const getValidRefreshToken = `-- name: GetValidRefreshToken :one
SELECT user_id, token_hash
FROM refresh_tokens
WHERE token_hash = $1
AND expires_at > NOW()
LIMIT 1
`
type GetValidRefreshTokenRow struct {
UserID int64 `json:"user_id"`
TokenHash string `json:"token_hash"`
}
func (q *Queries) GetValidRefreshToken(ctx context.Context, tokenHash string) (GetValidRefreshTokenRow, error) {
row := q.db.QueryRow(ctx, getValidRefreshToken, tokenHash)
var i GetValidRefreshTokenRow
err := row.Scan(&i.UserID, &i.TokenHash)
return i, err
}