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 { type Querier interface {
CountUserRefreshTokens(ctx context.Context, userID int64) (int64, error)
CreateRefreshToken(ctx context.Context, arg CreateRefreshTokenParams) (RefreshToken, error) CreateRefreshToken(ctx context.Context, arg CreateRefreshTokenParams) (RefreshToken, error)
CreateUser(ctx context.Context, arg CreateUserParams) (User, error) CreateUser(ctx context.Context, arg CreateUserParams) (User, error)
DeleteAllUserRefreshTokens(ctx context.Context, userID int64) 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 DeleteUser(ctx context.Context, arg DeleteUserParams) error
GetRefreshToken(ctx context.Context, tokenHash string) (RefreshToken, error) GetRefreshToken(ctx context.Context, tokenHash string) (RefreshToken, error)
GetUserByEmail(ctx context.Context, dollar_1 string) (User, error) GetUserByEmail(ctx context.Context, dollar_1 string) (User, error)
GetUserById(ctx context.Context, id int64) (User, error) GetUserById(ctx context.Context, id int64) (User, error)
GetUserRefreshTokens(ctx context.Context, userID int64) ([]RefreshToken, error) GetUserRefreshTokens(ctx context.Context, userID int64) ([]RefreshToken, error)
GetValidRefreshToken(ctx context.Context, tokenHash string) (GetValidRefreshTokenRow, error)
ListUsers(ctx context.Context) ([]User, error) ListUsers(ctx context.Context) ([]User, error)
UpdateUser(ctx context.Context, arg UpdateUserParams) error UpdateUser(ctx context.Context, arg UpdateUserParams) error
} }
+57 -4
View File
@@ -11,6 +11,18 @@ import (
"github.com/jackc/pgx/v5/pgtype" "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 const createRefreshToken = `-- name: CreateRefreshToken :one
INSERT INTO refresh_tokens (user_id, token_hash, expires_at) INSERT INTO refresh_tokens (user_id, token_hash, expires_at)
VALUES ($1, $2, $3) VALUES ($1, $2, $3)
@@ -46,13 +58,34 @@ func (q *Queries) DeleteAllUserRefreshTokens(ctx context.Context, userID int64)
return err return err
} }
const deleteRefreshToken = `-- name: DeleteRefreshToken :exec const deleteOldestRefreshToken = `-- name: DeleteOldestRefreshToken :exec
DELETE FROM refresh_tokens 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 { func (q *Queries) DeleteOldestRefreshToken(ctx context.Context, userID int64) error {
_, err := q.db.Exec(ctx, deleteRefreshToken, tokenHash) _, 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 return err
} }
@@ -104,3 +137,23 @@ func (q *Queries) GetUserRefreshTokens(ctx context.Context, userID int64) ([]Ref
} }
return items, nil 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
}
+22 -1
View File
@@ -11,10 +11,31 @@ WHERE token_hash = $1 LIMIT 1;
SELECT * FROM refresh_tokens SELECT * FROM refresh_tokens
WHERE user_id = $1; WHERE user_id = $1;
-- name: CountUserRefreshTokens :one
SELECT count(*) FROM refresh_tokens
WHERE user_id = $1;
-- name: GetValidRefreshToken :one
SELECT user_id, token_hash
FROM refresh_tokens
WHERE token_hash = $1
AND expires_at > NOW()
LIMIT 1;
-- name: DeleteRefreshToken :exec -- name: DeleteRefreshToken :exec
DELETE FROM refresh_tokens DELETE FROM refresh_tokens
WHERE token_hash = $1; WHERE token_hash = $1 and user_id = $2;
-- name: DeleteAllUserRefreshTokens :exec -- name: DeleteAllUserRefreshTokens :exec
DELETE FROM refresh_tokens DELETE FROM refresh_tokens
WHERE user_id = $1; WHERE user_id = $1;
-- name: DeleteOldestRefreshToken :exec
DELETE FROM refresh_tokens
WHERE id = (
SELECT id
FROM refresh_tokens rt
WHERE rt.user_id = $1
ORDER BY rt.created_at ASC
LIMIT 1
);