diff --git a/loopdb/sqlc/migrations/000010_static_address_deposits.up.sql b/loopdb/sqlc/migrations/000010_static_address_deposits.up.sql index 2952e7e5..b996ea9b 100644 --- a/loopdb/sqlc/migrations/000010_static_address_deposits.up.sql +++ b/loopdb/sqlc/migrations/000010_static_address_deposits.up.sql @@ -45,4 +45,4 @@ CREATE TABLE IF NOT EXISTS deposit_updates ( -- update_timestamp is the timestamp of the update. update_timestamp TIMESTAMP NOT NULL -); +); \ No newline at end of file diff --git a/loopdb/sqlc/querier.go b/loopdb/sqlc/querier.go index d40bd762..0a380e42 100644 --- a/loopdb/sqlc/querier.go +++ b/loopdb/sqlc/querier.go @@ -20,6 +20,7 @@ type Querier interface { CreateWithdrawalDeposit(ctx context.Context, arg CreateWithdrawalDepositParams) error DepositForOutpoint(ctx context.Context, arg DepositForOutpointParams) (Deposit, error) DepositIDsForSwapHash(ctx context.Context, swapHash []byte) ([][]byte, error) + DepositsForSwapHash(ctx context.Context, swapHash []byte) ([]DepositsForSwapHashRow, error) FetchLiquidityParams(ctx context.Context) ([]byte, error) GetAllWithdrawals(ctx context.Context) ([]Withdrawal, error) GetBatchSweeps(ctx context.Context, batchID int32) ([]Sweep, error) diff --git a/loopdb/sqlc/queries/static_address_loopin.sql b/loopdb/sqlc/queries/static_address_loopin.sql index 9baadfbe..36a6cfdc 100644 --- a/loopdb/sqlc/queries/static_address_loopin.sql +++ b/loopdb/sqlc/queries/static_address_loopin.sql @@ -118,5 +118,26 @@ FROM WHERE swap_hash = $1; +-- name: DepositsForSwapHash :many +SELECT + d.*, + u.update_state, + u.update_timestamp +FROM + deposits d + 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; + + + + diff --git a/loopdb/sqlc/static_address_loopin.sql.go b/loopdb/sqlc/static_address_loopin.sql.go index 6ce17730..3d582dea 100644 --- a/loopdb/sqlc/static_address_loopin.sql.go +++ b/loopdb/sqlc/static_address_loopin.sql.go @@ -43,6 +43,76 @@ func (q *Queries) DepositIDsForSwapHash(ctx context.Context, swapHash []byte) ([ return items, nil } +const depositsForSwapHash = `-- name: DepositsForSwapHash :many +SELECT + d.id, d.deposit_id, d.tx_hash, d.out_index, d.amount, d.confirmation_height, d.timeout_sweep_pk_script, d.expiry_sweep_txid, d.finalized_withdrawal_tx, d.swap_hash, + u.update_state, + u.update_timestamp +FROM + deposits d + 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 +` + +type DepositsForSwapHashRow struct { + ID int32 + DepositID []byte + TxHash []byte + OutIndex int32 + Amount int64 + ConfirmationHeight int64 + TimeoutSweepPkScript []byte + ExpirySweepTxid []byte + FinalizedWithdrawalTx sql.NullString + SwapHash []byte + UpdateState sql.NullString + UpdateTimestamp sql.NullTime +} + +func (q *Queries) DepositsForSwapHash(ctx context.Context, swapHash []byte) ([]DepositsForSwapHashRow, error) { + rows, err := q.db.QueryContext(ctx, depositsForSwapHash, swapHash) + if err != nil { + return nil, err + } + defer rows.Close() + var items []DepositsForSwapHashRow + for rows.Next() { + var i DepositsForSwapHashRow + if err := rows.Scan( + &i.ID, + &i.DepositID, + &i.TxHash, + &i.OutIndex, + &i.Amount, + &i.ConfirmationHeight, + &i.TimeoutSweepPkScript, + &i.ExpirySweepTxid, + &i.FinalizedWithdrawalTx, + &i.SwapHash, + &i.UpdateState, + &i.UpdateTimestamp, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + const getLoopInSwapUpdates = `-- name: GetLoopInSwapUpdates :many SELECT static_address_swap_updates.id, static_address_swap_updates.swap_hash, static_address_swap_updates.update_state, static_address_swap_updates.update_timestamp