mirror of https://github.com/lightninglabs/loop
sqlc: deposit queries, models and migrations
parent
3891d5d66a
commit
401ff43365
@ -0,0 +1 @@
|
|||||||
|
DROP TABLE IF EXISTS deposits;
|
@ -0,0 +1,43 @@
|
|||||||
|
-- deposits stores historic and unspent static address outputs.
|
||||||
|
CREATE TABLE IF NOT EXISTS deposits (
|
||||||
|
-- id is the auto-incrementing primary key for a static address.
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
|
||||||
|
-- deposit_id is the unique identifier for the deposit.
|
||||||
|
deposit_id BLOB NOT NULL UNIQUE,
|
||||||
|
|
||||||
|
-- tx_hash is the transaction hash of the deposit.
|
||||||
|
tx_hash BYTEA NOT NULL,
|
||||||
|
|
||||||
|
-- output_index is the index of the output in the transaction.
|
||||||
|
out_index INT NOT NULL,
|
||||||
|
|
||||||
|
-- amount is the amount of the deposit.
|
||||||
|
amount BIGINT NOT NULL,
|
||||||
|
|
||||||
|
-- confirmation_height is the absolute height at which the deposit was
|
||||||
|
-- confirmed.
|
||||||
|
confirmation_height BIGINT NOT NULL,
|
||||||
|
|
||||||
|
-- timeout_sweep_pk_script is the public key script that will be used to
|
||||||
|
-- sweep the deposit after has expired.
|
||||||
|
timeout_sweep_pk_script BYTEA NOT NULL,
|
||||||
|
|
||||||
|
-- expiry_sweep_txid is the transaction id of the expiry sweep.
|
||||||
|
expiry_sweep_txid BLOB
|
||||||
|
);
|
||||||
|
|
||||||
|
-- deposit_updates contains all the updates to a deposit.
|
||||||
|
CREATE TABLE IF NOT EXISTS deposit_updates (
|
||||||
|
-- id is the auto incrementing primary key.
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
|
||||||
|
-- deposit_id is the unique identifier for the deposit.
|
||||||
|
deposit_id BLOB NOT NULL REFERENCES deposits(deposit_id),
|
||||||
|
|
||||||
|
-- update_state is the state of the deposit at the time of the update.
|
||||||
|
update_state TEXT NOT NULL,
|
||||||
|
|
||||||
|
-- update_timestamp is the timestamp of the update.
|
||||||
|
update_timestamp TIMESTAMP NOT NULL
|
||||||
|
);
|
@ -0,0 +1,66 @@
|
|||||||
|
-- name: CreateDeposit :exec
|
||||||
|
INSERT INTO deposits (
|
||||||
|
deposit_id,
|
||||||
|
tx_hash,
|
||||||
|
out_index,
|
||||||
|
amount,
|
||||||
|
confirmation_height,
|
||||||
|
timeout_sweep_pk_script,
|
||||||
|
expiry_sweep_txid
|
||||||
|
) VALUES (
|
||||||
|
$1,
|
||||||
|
$2,
|
||||||
|
$3,
|
||||||
|
$4,
|
||||||
|
$5,
|
||||||
|
$6,
|
||||||
|
$7
|
||||||
|
);
|
||||||
|
|
||||||
|
-- name: UpdateDeposit :exec
|
||||||
|
UPDATE deposits
|
||||||
|
SET
|
||||||
|
tx_hash = $2,
|
||||||
|
out_index = $3,
|
||||||
|
confirmation_height = $4,
|
||||||
|
expiry_sweep_txid = $5
|
||||||
|
WHERE
|
||||||
|
deposits.deposit_id = $1;
|
||||||
|
|
||||||
|
-- name: InsertDepositUpdate :exec
|
||||||
|
INSERT INTO deposit_updates (
|
||||||
|
deposit_id,
|
||||||
|
update_state,
|
||||||
|
update_timestamp
|
||||||
|
) VALUES (
|
||||||
|
$1,
|
||||||
|
$2,
|
||||||
|
$3
|
||||||
|
);
|
||||||
|
|
||||||
|
-- name: GetDeposit :one
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
deposits
|
||||||
|
WHERE
|
||||||
|
deposit_id = $1;
|
||||||
|
|
||||||
|
-- name: AllDeposits :many
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
deposits
|
||||||
|
ORDER BY
|
||||||
|
id ASC;
|
||||||
|
|
||||||
|
-- name: GetLatestDepositUpdate :one
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
deposit_updates
|
||||||
|
WHERE
|
||||||
|
deposit_id = $1
|
||||||
|
ORDER BY
|
||||||
|
update_timestamp DESC
|
||||||
|
LIMIT 1;
|
@ -0,0 +1,197 @@
|
|||||||
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// sqlc v1.25.0
|
||||||
|
// source: static_address_deposits.sql
|
||||||
|
|
||||||
|
package sqlc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const allDeposits = `-- name: AllDeposits :many
|
||||||
|
SELECT
|
||||||
|
id, deposit_id, tx_hash, out_index, amount, confirmation_height, timeout_sweep_pk_script, expiry_sweep_txid
|
||||||
|
FROM
|
||||||
|
deposits
|
||||||
|
ORDER BY
|
||||||
|
id ASC
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) AllDeposits(ctx context.Context) ([]Deposit, error) {
|
||||||
|
rows, err := q.db.QueryContext(ctx, allDeposits)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
var items []Deposit
|
||||||
|
for rows.Next() {
|
||||||
|
var i Deposit
|
||||||
|
if err := rows.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.DepositID,
|
||||||
|
&i.TxHash,
|
||||||
|
&i.OutIndex,
|
||||||
|
&i.Amount,
|
||||||
|
&i.ConfirmationHeight,
|
||||||
|
&i.TimeoutSweepPkScript,
|
||||||
|
&i.ExpirySweepTxid,
|
||||||
|
); 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 createDeposit = `-- name: CreateDeposit :exec
|
||||||
|
INSERT INTO deposits (
|
||||||
|
deposit_id,
|
||||||
|
tx_hash,
|
||||||
|
out_index,
|
||||||
|
amount,
|
||||||
|
confirmation_height,
|
||||||
|
timeout_sweep_pk_script,
|
||||||
|
expiry_sweep_txid
|
||||||
|
) VALUES (
|
||||||
|
$1,
|
||||||
|
$2,
|
||||||
|
$3,
|
||||||
|
$4,
|
||||||
|
$5,
|
||||||
|
$6,
|
||||||
|
$7
|
||||||
|
)
|
||||||
|
`
|
||||||
|
|
||||||
|
type CreateDepositParams struct {
|
||||||
|
DepositID []byte
|
||||||
|
TxHash []byte
|
||||||
|
OutIndex int32
|
||||||
|
Amount int64
|
||||||
|
ConfirmationHeight int64
|
||||||
|
TimeoutSweepPkScript []byte
|
||||||
|
ExpirySweepTxid []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) CreateDeposit(ctx context.Context, arg CreateDepositParams) error {
|
||||||
|
_, err := q.db.ExecContext(ctx, createDeposit,
|
||||||
|
arg.DepositID,
|
||||||
|
arg.TxHash,
|
||||||
|
arg.OutIndex,
|
||||||
|
arg.Amount,
|
||||||
|
arg.ConfirmationHeight,
|
||||||
|
arg.TimeoutSweepPkScript,
|
||||||
|
arg.ExpirySweepTxid,
|
||||||
|
)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDeposit = `-- name: GetDeposit :one
|
||||||
|
SELECT
|
||||||
|
id, deposit_id, tx_hash, out_index, amount, confirmation_height, timeout_sweep_pk_script, expiry_sweep_txid
|
||||||
|
FROM
|
||||||
|
deposits
|
||||||
|
WHERE
|
||||||
|
deposit_id = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetDeposit(ctx context.Context, depositID []byte) (Deposit, error) {
|
||||||
|
row := q.db.QueryRowContext(ctx, getDeposit, depositID)
|
||||||
|
var i Deposit
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.DepositID,
|
||||||
|
&i.TxHash,
|
||||||
|
&i.OutIndex,
|
||||||
|
&i.Amount,
|
||||||
|
&i.ConfirmationHeight,
|
||||||
|
&i.TimeoutSweepPkScript,
|
||||||
|
&i.ExpirySweepTxid,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getLatestDepositUpdate = `-- name: GetLatestDepositUpdate :one
|
||||||
|
SELECT
|
||||||
|
id, deposit_id, update_state, update_timestamp
|
||||||
|
FROM
|
||||||
|
deposit_updates
|
||||||
|
WHERE
|
||||||
|
deposit_id = $1
|
||||||
|
ORDER BY
|
||||||
|
update_timestamp DESC
|
||||||
|
LIMIT 1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetLatestDepositUpdate(ctx context.Context, depositID []byte) (DepositUpdate, error) {
|
||||||
|
row := q.db.QueryRowContext(ctx, getLatestDepositUpdate, depositID)
|
||||||
|
var i DepositUpdate
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ID,
|
||||||
|
&i.DepositID,
|
||||||
|
&i.UpdateState,
|
||||||
|
&i.UpdateTimestamp,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const insertDepositUpdate = `-- name: InsertDepositUpdate :exec
|
||||||
|
INSERT INTO deposit_updates (
|
||||||
|
deposit_id,
|
||||||
|
update_state,
|
||||||
|
update_timestamp
|
||||||
|
) VALUES (
|
||||||
|
$1,
|
||||||
|
$2,
|
||||||
|
$3
|
||||||
|
)
|
||||||
|
`
|
||||||
|
|
||||||
|
type InsertDepositUpdateParams struct {
|
||||||
|
DepositID []byte
|
||||||
|
UpdateState string
|
||||||
|
UpdateTimestamp time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) InsertDepositUpdate(ctx context.Context, arg InsertDepositUpdateParams) error {
|
||||||
|
_, err := q.db.ExecContext(ctx, insertDepositUpdate, arg.DepositID, arg.UpdateState, arg.UpdateTimestamp)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateDeposit = `-- name: UpdateDeposit :exec
|
||||||
|
UPDATE deposits
|
||||||
|
SET
|
||||||
|
tx_hash = $2,
|
||||||
|
out_index = $3,
|
||||||
|
confirmation_height = $4,
|
||||||
|
expiry_sweep_txid = $5
|
||||||
|
WHERE
|
||||||
|
deposits.deposit_id = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateDepositParams struct {
|
||||||
|
DepositID []byte
|
||||||
|
TxHash []byte
|
||||||
|
OutIndex int32
|
||||||
|
ConfirmationHeight int64
|
||||||
|
ExpirySweepTxid []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdateDeposit(ctx context.Context, arg UpdateDepositParams) error {
|
||||||
|
_, err := q.db.ExecContext(ctx, updateDeposit,
|
||||||
|
arg.DepositID,
|
||||||
|
arg.TxHash,
|
||||||
|
arg.OutIndex,
|
||||||
|
arg.ConfirmationHeight,
|
||||||
|
arg.ExpirySweepTxid,
|
||||||
|
)
|
||||||
|
return err
|
||||||
|
}
|
Loading…
Reference in New Issue