2023-05-29 19:19:57 -07:00
|
|
|
-- name: InsertInvoice :one
|
|
|
|
INSERT INTO invoices (
|
|
|
|
hash, preimage, memo, amount_msat, cltv_delta, expiry, payment_addr,
|
2023-11-22 17:23:23 +01:00
|
|
|
payment_request, payment_request_hash, state, amount_paid_msat, is_amp,
|
|
|
|
is_hodl, is_keysend, created_at
|
2023-05-29 19:19:57 -07:00
|
|
|
) VALUES (
|
2023-11-22 17:23:23 +01:00
|
|
|
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15
|
2023-05-29 19:19:57 -07:00
|
|
|
) RETURNING id;
|
|
|
|
|
|
|
|
-- name: InsertInvoiceFeature :exec
|
|
|
|
INSERT INTO invoice_features (
|
|
|
|
invoice_id, feature
|
|
|
|
) VALUES (
|
|
|
|
$1, $2
|
|
|
|
);
|
|
|
|
|
|
|
|
-- name: GetInvoiceFeatures :many
|
|
|
|
SELECT *
|
|
|
|
FROM invoice_features
|
|
|
|
WHERE invoice_id = $1;
|
|
|
|
|
|
|
|
-- This method may return more than one invoice if filter using multiple fields
|
|
|
|
-- from different invoices. It is the caller's responsibility to ensure that
|
|
|
|
-- we bubble up an error in those cases.
|
|
|
|
|
|
|
|
-- name: GetInvoice :many
|
2023-11-22 17:23:23 +01:00
|
|
|
SELECT i.*
|
|
|
|
FROM invoices i
|
|
|
|
LEFT JOIN amp_sub_invoices a on i.id = a.invoice_id
|
2023-05-29 19:19:57 -07:00
|
|
|
WHERE (
|
2023-11-22 17:23:23 +01:00
|
|
|
i.id = sqlc.narg('add_index') OR
|
2023-05-29 19:19:57 -07:00
|
|
|
sqlc.narg('add_index') IS NULL
|
|
|
|
) AND (
|
2023-11-22 17:23:23 +01:00
|
|
|
i.hash = sqlc.narg('hash') OR
|
2023-05-29 19:19:57 -07:00
|
|
|
sqlc.narg('hash') IS NULL
|
|
|
|
) AND (
|
2023-11-22 17:23:23 +01:00
|
|
|
i.preimage = sqlc.narg('preimage') OR
|
2023-05-29 19:19:57 -07:00
|
|
|
sqlc.narg('preimage') IS NULL
|
|
|
|
) AND (
|
2023-11-22 17:23:23 +01:00
|
|
|
i.payment_addr = sqlc.narg('payment_addr') OR
|
2023-05-29 19:19:57 -07:00
|
|
|
sqlc.narg('payment_addr') IS NULL
|
2023-11-22 17:23:23 +01:00
|
|
|
) AND (
|
|
|
|
a.set_id = sqlc.narg('set_id') OR
|
|
|
|
sqlc.narg('set_id') IS NULL
|
2023-05-29 19:19:57 -07:00
|
|
|
)
|
2023-11-22 17:23:23 +01:00
|
|
|
GROUP BY i.id
|
2023-05-29 19:19:57 -07:00
|
|
|
LIMIT 2;
|
|
|
|
|
|
|
|
-- name: FilterInvoices :many
|
2023-11-22 17:23:23 +01:00
|
|
|
SELECT
|
|
|
|
invoices.*
|
2023-05-29 19:19:57 -07:00
|
|
|
FROM invoices
|
|
|
|
WHERE (
|
|
|
|
id >= sqlc.narg('add_index_get') OR
|
|
|
|
sqlc.narg('add_index_get') IS NULL
|
|
|
|
) AND (
|
|
|
|
id <= sqlc.narg('add_index_let') OR
|
|
|
|
sqlc.narg('add_index_let') IS NULL
|
2023-11-22 17:23:23 +01:00
|
|
|
) AND (
|
|
|
|
settle_index >= sqlc.narg('settle_index_get') OR
|
|
|
|
sqlc.narg('settle_index_get') IS NULL
|
|
|
|
) AND (
|
|
|
|
settle_index <= sqlc.narg('settle_index_let') OR
|
|
|
|
sqlc.narg('settle_index_let') IS NULL
|
2023-05-29 19:19:57 -07:00
|
|
|
) AND (
|
|
|
|
state = sqlc.narg('state') OR
|
|
|
|
sqlc.narg('state') IS NULL
|
|
|
|
) AND (
|
|
|
|
created_at >= sqlc.narg('created_after') OR
|
|
|
|
sqlc.narg('created_after') IS NULL
|
|
|
|
) AND (
|
|
|
|
created_at <= sqlc.narg('created_before') OR
|
|
|
|
sqlc.narg('created_before') IS NULL
|
|
|
|
) AND (
|
|
|
|
CASE
|
|
|
|
WHEN sqlc.narg('pending_only')=TRUE THEN (state = 0 OR state = 3)
|
|
|
|
ELSE TRUE
|
|
|
|
END
|
|
|
|
)
|
|
|
|
ORDER BY
|
|
|
|
CASE
|
|
|
|
WHEN sqlc.narg('reverse') = FALSE THEN id
|
|
|
|
ELSE NULL
|
|
|
|
END ASC,
|
|
|
|
CASE
|
|
|
|
WHEN sqlc.narg('reverse') = TRUE THEN id
|
|
|
|
ELSE NULL
|
|
|
|
END DESC
|
|
|
|
LIMIT @num_limit OFFSET @num_offset;
|
|
|
|
|
2023-11-22 17:23:23 +01:00
|
|
|
-- name: UpdateInvoiceState :execresult
|
|
|
|
UPDATE invoices
|
|
|
|
SET state = $2,
|
|
|
|
preimage = COALESCE(preimage, $3),
|
|
|
|
settle_index = COALESCE(settle_index, $4),
|
|
|
|
settled_at = COALESCE(settled_at, $5)
|
|
|
|
WHERE id = $1;
|
|
|
|
|
|
|
|
-- name: UpdateInvoiceAmountPaid :execresult
|
|
|
|
UPDATE invoices
|
|
|
|
SET amount_paid_msat = $2
|
|
|
|
WHERE id = $1;
|
|
|
|
|
|
|
|
-- name: NextInvoiceSettleIndex :one
|
|
|
|
UPDATE invoice_sequences SET current_value = current_value + 1
|
|
|
|
WHERE name = 'settle_index'
|
|
|
|
RETURNING current_value;
|
2023-05-29 19:19:57 -07:00
|
|
|
|
2023-11-22 17:23:23 +01:00
|
|
|
-- name: DeleteInvoice :execresult
|
2023-05-29 19:19:57 -07:00
|
|
|
DELETE
|
|
|
|
FROM invoices
|
|
|
|
WHERE (
|
|
|
|
id = sqlc.narg('add_index') OR
|
|
|
|
sqlc.narg('add_index') IS NULL
|
|
|
|
) AND (
|
|
|
|
hash = sqlc.narg('hash') OR
|
|
|
|
sqlc.narg('hash') IS NULL
|
|
|
|
) AND (
|
2023-11-22 17:23:23 +01:00
|
|
|
settle_index = sqlc.narg('settle_index') OR
|
|
|
|
sqlc.narg('settle_index') IS NULL
|
2023-05-29 19:19:57 -07:00
|
|
|
) AND (
|
|
|
|
payment_addr = sqlc.narg('payment_addr') OR
|
|
|
|
sqlc.narg('payment_addr') IS NULL
|
|
|
|
);
|
|
|
|
|
2023-11-22 17:23:23 +01:00
|
|
|
-- name: DeleteCanceledInvoices :execresult
|
|
|
|
DELETE
|
|
|
|
FROM invoices
|
|
|
|
WHERE state = 2;
|
|
|
|
|
|
|
|
-- name: InsertInvoiceHTLC :one
|
2023-05-29 19:19:57 -07:00
|
|
|
INSERT INTO invoice_htlcs (
|
|
|
|
htlc_id, chan_id, amount_msat, total_mpp_msat, accept_height, accept_time,
|
|
|
|
expiry_height, state, resolve_time, invoice_id
|
|
|
|
) VALUES (
|
|
|
|
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10
|
2023-11-22 17:23:23 +01:00
|
|
|
) RETURNING id;
|
2023-05-29 19:19:57 -07:00
|
|
|
|
|
|
|
-- name: GetInvoiceHTLCs :many
|
|
|
|
SELECT *
|
|
|
|
FROM invoice_htlcs
|
|
|
|
WHERE invoice_id = $1;
|
|
|
|
|
|
|
|
-- name: UpdateInvoiceHTLC :exec
|
|
|
|
UPDATE invoice_htlcs
|
2023-11-22 17:23:23 +01:00
|
|
|
SET state=$4, resolve_time=$5
|
|
|
|
WHERE htlc_id = $1 AND chan_id = $2 AND invoice_id = $3;
|
2023-05-29 19:19:57 -07:00
|
|
|
|
|
|
|
-- name: UpdateInvoiceHTLCs :exec
|
|
|
|
UPDATE invoice_htlcs
|
|
|
|
SET state=$2, resolve_time=$3
|
|
|
|
WHERE invoice_id = $1 AND resolve_time IS NULL;
|
|
|
|
|
|
|
|
-- name: InsertInvoiceHTLCCustomRecord :exec
|
|
|
|
INSERT INTO invoice_htlc_custom_records (
|
|
|
|
key, value, htlc_id
|
|
|
|
) VALUES (
|
|
|
|
$1, $2, $3
|
|
|
|
);
|
|
|
|
|
|
|
|
-- name: GetInvoiceHTLCCustomRecords :many
|
|
|
|
SELECT ihcr.htlc_id, key, value
|
|
|
|
FROM invoice_htlcs ih JOIN invoice_htlc_custom_records ihcr ON ih.id=ihcr.htlc_id
|
|
|
|
WHERE ih.invoice_id = $1;
|