loop/loopdb/sqlc/queries/static_address_loopin.sql

200 lines
4.9 KiB
MySQL
Raw Normal View History

-- name: InsertStaticAddressLoopIn :exec
INSERT INTO static_address_swaps (
swap_hash,
swap_invoice,
last_hop,
payment_timeout_seconds,
quoted_swap_fee_satoshis,
deposit_outpoints,
selected_amount,
htlc_tx_fee_rate_sat_kw,
htlc_timeout_sweep_tx_id,
htlc_timeout_sweep_address,
fast,
change_static_address_id
) VALUES (
$1,
$2,
$3,
$4,
$5,
$6,
$7,
$8,
$9,
$10,
$11,
$12
);
-- name: UpdateStaticAddressLoopIn :exec
UPDATE static_address_swaps
SET
htlc_tx_fee_rate_sat_kw = $2,
htlc_timeout_sweep_tx_id = $3,
confirmed_htlc_tx_id = $4,
confirmed_htlc_output_index = $5,
confirmed_htlc_output_value = $6
WHERE
swap_hash = $1;
-- name: RecordStaticAddressRiskDecision :exec
UPDATE static_address_swaps
SET
confirmation_risk_decision = $2,
confirmation_risk_decision_time = CASE
WHEN confirmation_risk_decision = $2 THEN
COALESCE(confirmation_risk_decision_time, $3)
ELSE $3
END
WHERE
swap_hash = $1
AND NOT (
confirmation_risk_decision = 'rejected'
AND $2 = 'accepted'
);
-- name: InsertStaticAddressMetaUpdate :exec
INSERT INTO static_address_swap_updates (
swap_hash,
update_state,
update_timestamp
) VALUES (
$1,
$2,
$3
);
-- name: GetStaticAddressLoopInSwap :one
SELECT
swaps.*,
static_address_swaps.*,
htlc_keys.*,
change_address.client_pubkey change_client_pubkey,
change_address.server_pubkey change_server_pubkey,
change_address.expiry change_expiry,
change_address.client_key_family change_client_key_family,
change_address.client_key_index change_client_key_index,
change_address.pkscript change_pkscript,
change_address.protocol_version change_protocol_version,
change_address.initiation_height change_initiation_height
FROM
swaps
JOIN
static_address_swaps ON swaps.swap_hash = static_address_swaps.swap_hash
JOIN
htlc_keys ON swaps.swap_hash = htlc_keys.swap_hash
LEFT JOIN
static_addresses change_address
ON static_address_swaps.change_static_address_id = change_address.id
WHERE
swaps.swap_hash = $1;
-- name: GetStaticAddressLoopInSwapsByStates :many
SELECT
swaps.*,
static_address_swaps.*,
htlc_keys.*,
change_address.client_pubkey change_client_pubkey,
change_address.server_pubkey change_server_pubkey,
change_address.expiry change_expiry,
change_address.client_key_family change_client_key_family,
change_address.client_key_index change_client_key_index,
change_address.pkscript change_pkscript,
change_address.protocol_version change_protocol_version,
change_address.initiation_height change_initiation_height
FROM
swaps
JOIN
static_address_swaps ON swaps.swap_hash = static_address_swaps.swap_hash
JOIN
htlc_keys ON swaps.swap_hash = htlc_keys.swap_hash
LEFT JOIN
static_addresses change_address
ON static_address_swaps.change_static_address_id = change_address.id
JOIN
static_address_swap_updates u ON swaps.swap_hash = u.swap_hash
-- This subquery ensures that we are checking only the latest update for
-- each swap_hash.
AND u.update_timestamp = (
SELECT MAX(update_timestamp)
FROM static_address_swap_updates
WHERE swap_hash = u.swap_hash
)
WHERE
(',' || $1 || ',') LIKE ('%,' || u.update_state || ',%')
ORDER BY
swaps.id;
-- name: GetLoopInSwapUpdates :many
SELECT
static_address_swap_updates.*
FROM
static_address_swap_updates
WHERE
swap_hash = $1;
-- name: IsStored :one
SELECT EXISTS (
SELECT 1
FROM static_address_swaps
WHERE swap_hash = $1
);
-- name: OverrideSelectedSwapAmount :exec
UPDATE static_address_swaps
SET
selected_amount = $2
WHERE swap_hash = $1;
-- name: MapDepositToSwap :exec
UPDATE
deposits
SET
swap_hash = $2
WHERE
deposit_id = $1;
-- name: SwapHashForDepositID :one
SELECT
swap_hash
FROM
deposits
WHERE
deposit_id = $1;
-- name: DepositIDsForSwapHash :many
SELECT
deposit_id
FROM
deposits
WHERE
swap_hash = $1;
2025-07-31 12:40:26 +02:00
-- name: DepositsForSwapHash :many
SELECT
d.*,
sa.client_pubkey client_pubkey,
sa.server_pubkey server_pubkey,
sa.expiry expiry,
sa.client_key_family client_key_family,
sa.client_key_index client_key_index,
sa.pkscript pkscript,
sa.protocol_version protocol_version,
sa.initiation_height initiation_height,
2025-07-31 12:40:26 +02:00
u.update_state,
u.update_timestamp
FROM
deposits d
LEFT JOIN static_addresses sa ON sa.id = d.static_address_id
2025-07-31 12:40:26 +02:00
LEFT JOIN
deposit_updates u ON u.id = (
SELECT id
FROM deposit_updates
WHERE deposit_id = d.deposit_id
ORDER BY update_timestamp DESC
LIMIT 1
)
WHERE
d.swap_hash = $1;