More queries forrefresh token sqlc files.
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user