Files
PrivateCaptcha/pkg/db/queries/postgres/users.sql
2025-09-15 08:53:13 +03:00

43 lines
1.3 KiB
SQL

-- name: GetUserByID :one
SELECT * FROM backend.users WHERE id = $1;
-- name: GetUserByEmail :one
SELECT * FROM backend.users WHERE email = $1 AND deleted_at IS NULL;
-- name: CreateUser :one
INSERT INTO backend.users (name, email, subscription_id) VALUES ($1, $2, $3) RETURNING *;
-- name: UpdateUserData :one
UPDATE backend.users SET name = $2, email = $3, updated_at = NOW() WHERE id = $1 RETURNING *;
-- name: UpdateUserSubscription :one
UPDATE backend.users SET subscription_id = $2, updated_at = NOW() WHERE id = $1 RETURNING *;
-- name: SoftDeleteUser :one
UPDATE backend.users SET deleted_at = NOW() WHERE id = $1 RETURNING *;
-- name: GetSoftDeletedUsers :many
SELECT sqlc.embed(u)
FROM backend.users u
WHERE u.deleted_at IS NOT NULL
AND u.deleted_at < $1
LIMIT $2;
-- name: DeleteUsers :exec
DELETE FROM backend.users WHERE id = ANY($1::INT[]);
-- name: GetUsersWithoutSubscription :many
SELECT * FROM backend.users where id = ANY($1::INT[]) AND (subscription_id IS NULL OR deleted_at IS NOT NULL);
-- name: GetTrialUsers :many
SELECT u.*
FROM backend.users u
JOIN backend.subscriptions s ON u.subscription_id = s.id
WHERE
s.source = $1 AND
s.trial_ends_at IS NOT NULL AND
s.trial_ends_at BETWEEN $2 AND $3 AND
s.status = $4 AND
u.deleted_at IS NULL
LIMIT $5;