df/db/query/account.sql

83 lines
2.0 KiB
SQL

-- name: GetAccount :one
SELECT * FROM accounts
WHERE "id" = $1 LIMIT 1;
-- name: GetAccountByEmail :one
SELECT * FROM accounts
WHERE "email" = $1 LIMIT 1;
-- name: GetAccountForUpdate :one
SELECT * FROM accounts
WHERE "id" = $1 LIMIT 1
FOR NO KEY UPDATE;
-- name: CreateAccount :one
INSERT INTO accounts (
"passwordhash",
"privacy_accepted",
"privacy_accepted_date",
"firstname",
"lastname",
"birthday",
"email",
"phone",
"city",
"zip",
"street",
"country",
"creator",
"changer"
) VALUES (
sqlc.arg(passwordhash),
sqlc.arg(privacy_accepted),
sqlc.arg(privacy_accepted_date),
sqlc.arg(firstname),
sqlc.arg(lastname),
sqlc.arg(birthday),
sqlc.arg(email),
sqlc.arg(phone),
sqlc.arg(city),
sqlc.arg(zip),
sqlc.arg(street),
sqlc.arg(country),
sqlc.arg(creator),
sqlc.arg(creator)
) RETURNING *;
-- name: ListAccounts :many
SELECT * FROM accounts
ORDER BY "lastname", "firstname"
LIMIT $1
OFFSET $2;
-- name: UpdateAccount :one
UPDATE accounts
SET
"passwordhash" = COALESCE(sqlc.narg(passwordhash), "passwordhash"),
"firstname" = COALESCE(sqlc.narg(firstname), "firstname"),
"lastname" = COALESCE(sqlc.narg(lastname), "lastname"),
"birthday" = COALESCE(sqlc.narg(birthday), "birthday"),
"email" = COALESCE(sqlc.narg(email), "email"),
"phone" = COALESCE(sqlc.narg(phone), "phone"),
"city" = COALESCE(sqlc.narg(city), "city"),
"zip" = COALESCE(sqlc.narg(zip), "zip"),
"street" = COALESCE(sqlc.narg(street), "street"),
"country" = COALESCE(sqlc.narg(country), "country"),
"changer" = $2,
"changed" = now()
WHERE "id" = $1
RETURNING *;
-- name: UpdateAccountPrivacy :one
UPDATE accounts
SET
"privacy_accepted" = sqlc.arg(privacy_accepted),
"privacy_accepted_date" = sqlc.arg(privacy_accepted_date),
"changer" = sqlc.arg(changer),
"changed" = now()
WHERE "id" = sqlc.arg(id)
RETURNING *;
-- name: DeleteAccount :exec
DELETE FROM accounts
WHERE "id" = $1;