df/bff/db/query/document.sql

113 lines
2.2 KiB
SQL

-- name: GetDocument :one
SELECT * FROM documents
WHERE "id" = $1 LIMIT 1;
-- name: GetDocumentByHash :many
SELECT d."id" FROM documents d
INNER JOIN persons p
ON d."person_id" = p."id"
WHERE p."account_id" = sqlc.arg(account_id) AND
d."hash" = sqlc.arg(hash);
-- name: GetDocumentByIDWithAccountID :one
SELECT d.* FROM documents d
INNER JOIN persons p
ON d."person_id" = p."id"
WHERE d."id" = sqlc.arg(id) AND p."account_id" = sqlc.arg(account_id);
-- name: CreateDocument :one
INSERT INTO documents (
"person_id",
"name",
"type",
"path",
"hash",
"creator",
"changer",
"mail_id"
) VALUES (
sqlc.narg(person_id),
sqlc.arg(name),
sqlc.arg(type),
sqlc.arg(path),
sqlc.arg(hash),
sqlc.arg(creator),
sqlc.arg(creator),
sqlc.narg(mail_id)
) RETURNING *;
-- name: CreateDocumentUpload :one
INSERT INTO documents (
"person_id",
"name",
"type",
"path",
"hash",
"creator",
"changer",
"mail_id"
) VALUES (
$1, $2, $3, $4, $5, $6, $7, NULL
) RETURNING *;
-- name: CreateDocumentMail :one
INSERT INTO documents (
"mail_id",
"name",
"type",
"path",
"hash",
"creator",
"changer",
"person_id"
) VALUES (
$1, $2, $3, $4, $5, $6, $7, NULL
) RETURNING *;
-- name: ListDocuments :many
SELECT * FROM documents
ORDER BY "valid", "type", "name"
LIMIT $1
OFFSET $2;
-- name: UpdateDocument :one
UPDATE documents
SET
"name" = COALESCE(sqlc.narg(name), "name"),
"type" = COALESCE(sqlc.narg(type), "type"),
"path" = COALESCE(sqlc.narg(path), "path"),
"hash" = COALESCE(sqlc.narg(hash), "hash"),
changer = $2,
changed = now()
WHERE "id" = $1
RETURNING *;
-- name: ValidateDocument :one
UPDATE documents
SET
"valid" = true,
"valid_date" = now(),
"validated_by" = $2,
"changer" = $2,
"changed" = now()
WHERE "id" = $1
RETURNING *;
-- name: InvalidateDocument :one
UPDATE documents
SET
"valid" = false,
"valid_date" = NULL,
"validated_by" = NULL,
"changer" = $2,
"changed" = now()
WHERE "id" = $1
RETURNING *;
-- name: DeleteDocument :exec
DELETE FROM documents
WHERE "id" = $1;
-- name: DeleteDocumentsByPersonID :exec
DELETE FROM "documents"
WHERE "person_id" = sqlc.arg(person_id);