cmc-sales/go/sql/queries/documents.sql

85 lines
2.6 KiB
SQL

-- name: GetDocument :one
SELECT * FROM documents WHERE id = ?;
-- name: ListDocuments :many
SELECT * FROM documents ORDER BY created DESC LIMIT ? OFFSET ?;
-- name: ListDocumentsByType :many
SELECT * FROM documents WHERE type = ? ORDER BY created DESC LIMIT ? OFFSET ?;
-- name: CreateDocument :execresult
INSERT INTO documents (
type, created, user_id, doc_page_count, cmc_reference,
pdf_filename, pdf_created_at, pdf_created_by_user_id,
shipping_details, revision, bill_to, ship_to,
email_sent_at, email_sent_by_user_id
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
-- name: UpdateDocument :exec
UPDATE documents SET
type = ?, user_id = ?, doc_page_count = ?, cmc_reference = ?,
pdf_filename = ?, pdf_created_at = ?, pdf_created_by_user_id = ?,
shipping_details = ?, revision = ?, bill_to = ?, ship_to = ?,
email_sent_at = ?, email_sent_by_user_id = ?
WHERE id = ?;
-- name: DeleteDocument :exec
DELETE FROM documents WHERE id = ?;
-- name: GetRecentDocuments :many
SELECT
d.id,
d.type,
d.created,
d.cmc_reference,
d.pdf_filename,
d.revision,
u.username as created_by_username,
CASE
WHEN d.type = 'quote' THEN CONCAT('Quote ', d.cmc_reference)
WHEN d.type = 'invoice' THEN CONCAT('Invoice ', d.cmc_reference)
WHEN d.type = 'purchaseOrder' THEN CONCAT('Purchase Order ', d.cmc_reference)
WHEN d.type = 'orderAck' THEN CONCAT('Order Ack ', d.cmc_reference)
WHEN d.type = 'packingList' THEN CONCAT('Packing List ', d.cmc_reference)
ELSE CONCAT(d.type, ' ', d.cmc_reference)
END as display_name
FROM documents d
LEFT JOIN users u ON d.user_id = u.id
ORDER BY d.created DESC
LIMIT ?;
-- name: CountDocuments :one
SELECT COUNT(*) FROM documents;
-- name: CountDocumentsByType :one
SELECT COUNT(*) FROM documents WHERE type = ?;
-- name: GetDocumentWithUser :one
SELECT
d.id,
d.type,
d.created,
d.user_id,
d.doc_page_count,
d.cmc_reference,
d.pdf_filename,
d.pdf_created_at,
d.pdf_created_by_user_id,
d.shipping_details,
d.revision,
d.bill_to,
d.ship_to,
d.email_sent_at,
d.email_sent_by_user_id,
u.username as user_username,
u.first_name as user_first_name,
u.last_name as user_last_name,
u.email as user_email,
pu.username as pdf_creator_username,
pu.first_name as pdf_creator_first_name,
pu.last_name as pdf_creator_last_name,
pu.email as pdf_creator_email
FROM documents d
LEFT JOIN users u ON d.user_id = u.id
LEFT JOIN users pu ON d.pdf_created_by_user_id = pu.id
WHERE d.id = ?;