Kyoo/auth/sql/queries/sessions.sql
2025-04-23 19:41:42 +02:00

52 lines
829 B
SQL

-- name: GetUserFromToken :one
select
s.pk,
s.id,
s.last_used,
sqlc.embed(u)
from
users as u
inner join sessions as s on u.pk = s.user_pk
where
s.token = $1
limit 1;
-- name: TouchSession :exec
update
sessions
set
last_used = now()::timestamptz
where
pk = $1;
-- name: GetUserSessions :many
select
s.*
from
sessions as s
inner join users as u on u.pk = s.user_pk
where
u.pk = $1
order by
last_used;
-- name: CreateSession :one
insert into sessions(token, user_pk, device)
values ($1, $2, $3)
returning
*;
-- name: DeleteSession :one
delete from sessions as s using users as u
where s.user_pk = u.pk
and s.id = $1
and u.id = sqlc.arg(user_id)
returning
s.*;
-- name: ClearOtherSessions :exec
delete from sessions as s using users as u
where s.user_pk = u.pk
and s.id != @session_id
and u.id = @user_id;