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