From b4699e987cc8769fba0c854ac3381e24e842f8a5 Mon Sep 17 00:00:00 2001 From: LandaMm Date: Sun, 8 Jun 2025 22:59:33 +0200 Subject: [PATCH] feat: service and user session queries --- queries/service_sessions.sql | 44 ++++++++++++++++++++++++++++++++++++ queries/user_sessions.sql | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 queries/service_sessions.sql create mode 100644 queries/user_sessions.sql diff --git a/queries/service_sessions.sql b/queries/service_sessions.sql new file mode 100644 index 0000000..7064fba --- /dev/null +++ b/queries/service_sessions.sql @@ -0,0 +1,44 @@ +-- name: CreateServiceSession :one +INSERT INTO service_sessions ( + client_id, user_id, issued_at, expires_at, last_active, + ip_address, user_agent, is_active, scope, claims +) VALUES ( + $1, $2, NOW(), $3, $4, + $5, $6, $6, TRUE, $7, $8 +) +RETURNING *; + +-- name: ListActiveServiceSessionsByClient :many +SELECT * FROM service_sessions +WHERE client_id = $1 + AND is_active = TRUE +ORDER BY issued_at DESC; + +-- name: ListActiveServiceSessionsByUser :many +SELECT * FROM service_sessions +WHERE user_id = $1 + AND is_active = TRUE +ORDER BY issued_at DESC; + +-- name: GetServiceSessionByToken :one +SELECT * FROM service_sessions +WHERE refresh_token = $1 + AND is_active = TRUE; + +-- 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; diff --git a/queries/user_sessions.sql b/queries/user_sessions.sql new file mode 100644 index 0000000..fd07a89 --- /dev/null +++ b/queries/user_sessions.sql @@ -0,0 +1,40 @@ +-- name: CreateUserSession :one +INSERT INTO user_sessions ( + user_id, session_type, issued_at, expires_at, last_active, + ip_address, user_agent, + device_info, is_active +) VALUES ( + $1, $2, NOW(), $3, $4, + $5, $6, + $7, TRUE +) +RETURNING *; + +-- name: ListActiveUserSessions :many +SELECT * FROM user_sessions +WHERE user_id = $1 + AND is_active = TRUE +ORDER BY issued_at DESC; + +-- name: GetUserSessionByToken :one +SELECT * FROM user_sessions +WHERE refresh_token = $1 + AND is_active = TRUE; + +-- name: RevokeUserSession :exec +UPDATE user_sessions +SET is_active = FALSE, + revoked_at = NOW() +WHERE id = $1 + AND is_active = TRUE; + +-- name: UpdateSessionLastActive :exec +UPDATE user_sessions +SET last_active = NOW() +WHERE id = $1 + AND is_active = TRUE; + +-- name: ListAllSessions :many +SELECT * FROM user_sessions +ORDER BY issued_at DESC +LIMIT $1 OFFSET $2;