tijl.dev-core/modules/database/sessions.sql

35 lines
921 B
MySQL
Raw Normal View History

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