2024-08-21 17:31:03 +02:00
|
|
|
-- name: GetSession :one
|
2024-08-21 01:08:47 +02:00
|
|
|
SELECT * FROM sessions WHERE token = $1;
|
|
|
|
|
|
|
|
-- name: GetSessions :many
|
2024-08-21 17:31:03 +02:00
|
|
|
SELECT * FROM sessions WHERE uid = $1 ORDER BY $2;
|
2024-08-21 01:08:47 +02:00
|
|
|
|
|
|
|
-- name: GetActiveSessions :many
|
2024-08-21 17:31:03 +02:00
|
|
|
SELECT * FROM sessions WHERE uid = $1 AND (expires > CURRENT_TIMESTAMP OR expires IS NULL) ORDER BY $2;
|
2024-08-21 01:08:47 +02:00
|
|
|
|
|
|
|
-- name: CreateSession :exec
|
2024-08-21 17:31:03 +02:00
|
|
|
INSERT INTO sessions (uid, token, last_activity) VALUES ($1, $2, CURRENT_TIMESTAMP);
|
2024-08-21 01:08:47 +02:00
|
|
|
|
|
|
|
-- name: QuickUpdateSession :exec
|
2024-08-21 17:31:03 +02:00
|
|
|
WITH updated_session AS (
|
|
|
|
UPDATE sessions
|
|
|
|
SET last_activity = CURRENT_TIMESTAMP
|
|
|
|
WHERE token = $1
|
|
|
|
RETURNING id
|
|
|
|
)
|
|
|
|
INSERT INTO session_ips (session_id, ip_address, agent, access_time)
|
|
|
|
VALUES (
|
|
|
|
(SELECT id FROM updated_session),
|
|
|
|
$2,
|
|
|
|
$3,
|
|
|
|
CURRENT_TIMESTAMP
|
|
|
|
)
|
|
|
|
ON CONFLICT (session_id, ip_address)
|
|
|
|
DO UPDATE SET
|
|
|
|
agent = EXCLUDED.agent,
|
|
|
|
access_time = CURRENT_TIMESTAMP;
|
2024-08-21 01:08:47 +02:00
|
|
|
|
|
|
|
-- name: ExpireSession :exec
|
2024-08-21 17:31:03 +02:00
|
|
|
UPDATE sessions SET expires = 1 WHERE token = $1;
|
2024-08-21 01:08:47 +02:00
|
|
|
|