Files
hspguard/queries/service_sessions.sql
2025-06-15 21:04:22 +02:00

64 lines
1.6 KiB
SQL

-- name: CreateServiceSession :one
INSERT INTO service_sessions (
service_id, client_id, user_id, issued_at, expires_at, last_active,
ip_address, user_agent, access_token_id, refresh_token_id,
is_active, scope, claims
) VALUES (
$1, $2, $3, NOW(), $4, $5,
$6, $7, $8, $9,
TRUE, $10, $11
)
RETURNING *;
-- name: ListActiveServiceSessionsByClient :many
SELECT * FROM service_sessions
WHERE client_id = $1
AND is_active = TRUE
ORDER BY issued_at DESC
LIMIT $1 OFFSET $2;
-- name: ListActiveServiceSessionsByUser :many
SELECT * FROM service_sessions
WHERE user_id = $1
AND is_active = TRUE
ORDER BY issued_at DESC
LIMIT $1 OFFSET $2;
-- name: GetServiceSessionByAccessJTI :one
SELECT * FROM service_sessions
WHERE access_token_id = $1
AND is_active = TRUE;
-- name: GetServiceSessionByRefreshJTI :one
SELECT * FROM service_sessions
WHERE refresh_token_id = $1;
-- name: RevokeServiceSession :exec
UPDATE service_sessions
SET is_active = FALSE,
revoked_at = NOW()
WHERE id = $1
AND is_active = TRUE;
-- name: UpdateServiceSessionLastActive :exec
UPDATE service_sessions
SET last_active = NOW()
WHERE id = $1
AND is_active = TRUE;
-- name: ListAllServiceSessions :many
SELECT * FROM service_sessions
ORDER BY issued_at DESC
LIMIT $1 OFFSET $2;
-- name: GetServiceSessions :many
SELECT sqlc.embed(session), sqlc.embed(service), sqlc.embed(u)
FROM service_sessions AS session
JOIN api_services AS service ON service.id = session.service_id
JOIN users AS u ON u.id = session.user_id
ORDER BY session.issued_at DESC
LIMIT $1 OFFSET $2;
-- name: GetServiceSessionsCount :one
SELECT COUNT(*) FROM service_sessions;