df/bff/db/query/person.sql
itsscb d021f5db51 rf/modifies bff
ft/adds email_address and phone_number tables
ft/adds email and phone endpoints
ft/adds account_level query
2023-11-21 23:32:20 +01:00

90 lines
2.1 KiB
SQL

-- name: GetPerson :one
SELECT * FROM persons
WHERE "id" = $1 LIMIT 1;
-- name: CreatePerson :one
INSERT INTO persons (
"account_id",
"firstname",
"lastname",
"birthday",
"city",
"zip",
"street",
"relationship",
"country",
"creator",
"changer"
) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11
) RETURNING *;
-- name: ListPersons :many
SELECT * FROM persons
WHERE "account_id" = sqlc.arg(account_id)
ORDER BY "lastname", "firstname";
-- name: UpdatePerson :one
UPDATE persons
SET
"firstname" = COALESCE(sqlc.narg(firstname), "firstname"),
"lastname" = COALESCE(sqlc.narg(lastname), "lastname"),
"birthday" = COALESCE(sqlc.narg(birthday), "birthday"),
"city" = COALESCE(sqlc.narg(city), "city"),
"zip" = COALESCE(sqlc.narg(zip), "zip"),
"street" = COALESCE(sqlc.narg(street), "street"),
"country" = COALESCE(sqlc.narg(country), "country"),
"relationship" = COALESCE(sqlc.narg(relationship), "relationship"),
"changer" = $2,
"changed" = now()
WHERE "id" = $1
RETURNING *;
-- name: DeletePerson :exec
DELETE FROM persons
WHERE "id" = sqlc.arg(id);
-- name: GetReturns :many
SELECT * FROM returns
WHERE "person_id" = sqlc.arg(id);
-- name: GetPhoneNumbers :many
SELECT * FROM phone_numbers
WHERE "person_id" = sqlc.arg(person_id);
-- name: AddPhoneNumber :one
INSERT INTO phone_numbers (
"person_id",
"phone"
) VALUES (
sqlc.arg(person_id), sqlc.arg(email)
) RETURNING *;
-- name: DeletePhoneNumber :exec
DELETE FROM phone_numbers
WHERE "id" = sqlc.arg(id);
-- name: DeleteAllPhoneNumbers :exec
DELETE FROM phone_numbers
WHERE "person_id" = sqlc.arg(person_id);
-- name: GetEmailAddresses :many
SELECT * FROM email_addresses
WHERE "person_id" = sqlc.arg(person_id);
-- name: AddEmailAddress :one
INSERT INTO email_addresses (
"person_id",
"email"
) VALUES (
sqlc.arg(person_id), sqlc.arg(email)
) RETURNING *;
-- name: DeleteEmailAddress :exec
DELETE FROM email_addresses
WHERE "id" = sqlc.arg(id);
-- name: DeleteAllEmailAddresses :exec
DELETE FROM email_addresses
WHERE "person_id" = sqlc.arg(person_id);