Files
plumber/db/queries/users.sql
T
codegirl007 418ef93da5 Add polished answer notifications (#1)
Sends a branded Resend email when a question receives its first answer, records accepted and failed sends, and adds collapsed answer editing with cancel behavior.

Co-authored-by: codegirl-007 <s.raide@gmail.com>
2026-08-27 06:55:24 +00:00

56 lines
1.4 KiB
SQL

-- name: CreateUser :exec
INSERT INTO users (id, username, name, password_hash, role, email, avatar_url, state, created_at)
VALUES ($1, $2, $3, $4, $5, $6, '', '', $7);
-- name: GetUserByID :one
SELECT id, username, name, role, email, avatar_url, state, created_at
FROM users
WHERE id = $1;
-- name: GetUserByUsername :one
SELECT id, username, name, role, email, avatar_url, state, created_at, password_hash
FROM users
WHERE username = $1;
-- name: ListUsers :many
SELECT id, username, name, role, email, avatar_url, state, created_at
FROM users
WHERE (
sqlc.arg(search) = ''
OR username ILIKE '%' || sqlc.arg(search) || '%'
OR name ILIKE '%' || sqlc.arg(search) || '%'
OR email ILIKE '%' || sqlc.arg(search) || '%'
)
AND (
sqlc.arg(cursor_created) = ''
OR created_at < sqlc.arg(cursor_created)
OR (created_at = sqlc.arg(cursor_created) AND id < sqlc.arg(cursor_id))
)
ORDER BY created_at DESC, id DESC
LIMIT sqlc.arg(row_limit);
-- name: CountAdmins :one
SELECT COUNT(*)::bigint AS count
FROM users
WHERE role = $1;
-- name: GetUserRole :one
SELECT role
FROM users
WHERE id = $1;
-- name: UpdateUserRole :execresult
UPDATE users
SET role = $1
WHERE id = $2;
-- name: UpdateUserProfile :exec
UPDATE users
SET state = $1, email = $2
WHERE id = $3;
-- name: UpdateUserProfileAndAvatar :exec
UPDATE users
SET state = $1, email = $2, avatar_url = $3
WHERE id = $4;