mirror of
https://github.com/lnbits/lnbits-legend.git
synced 2025-02-24 14:51:05 +01:00
148 lines
4.7 KiB
Python
148 lines
4.7 KiB
Python
async def m001_initial(db):
|
|
"""
|
|
Initial pay table.
|
|
"""
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE lnurlp.pay_links (
|
|
id {db.serial_primary_key},
|
|
wallet TEXT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
amount {db.big_int} NOT NULL,
|
|
served_meta INTEGER NOT NULL,
|
|
served_pr INTEGER NOT NULL
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m002_webhooks_and_success_actions(db):
|
|
"""
|
|
Webhooks and success actions.
|
|
"""
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_url TEXT;")
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN success_text TEXT;")
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN success_url TEXT;")
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE lnurlp.invoices (
|
|
pay_link INTEGER NOT NULL REFERENCES {db.references_schema}pay_links (id),
|
|
payment_hash TEXT NOT NULL,
|
|
webhook_sent INT, -- null means not sent, otherwise store status
|
|
expiry INT
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m003_min_max_comment_fiat(db):
|
|
"""
|
|
Support for min/max amounts, comments and fiat prices that get
|
|
converted automatically to satoshis based on some API.
|
|
"""
|
|
await db.execute(
|
|
"ALTER TABLE lnurlp.pay_links ADD COLUMN currency TEXT;"
|
|
) # null = satoshis
|
|
await db.execute(
|
|
"ALTER TABLE lnurlp.pay_links ADD COLUMN comment_chars INTEGER DEFAULT 0;"
|
|
)
|
|
await db.execute("ALTER TABLE lnurlp.pay_links RENAME COLUMN amount TO min;")
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN max INTEGER;")
|
|
await db.execute("UPDATE lnurlp.pay_links SET max = min;")
|
|
await db.execute("DROP TABLE lnurlp.invoices")
|
|
|
|
|
|
async def m004_fiat_base_multiplier(db):
|
|
"""
|
|
Store the multiplier for fiat prices. We store the price in cents and
|
|
remember to multiply by 100 when we use it to convert to Dollars.
|
|
"""
|
|
await db.execute(
|
|
"ALTER TABLE lnurlp.pay_links ADD COLUMN fiat_base_multiplier INTEGER DEFAULT 1;"
|
|
)
|
|
|
|
|
|
async def m005_webhook_headers_and_body(db):
|
|
"""
|
|
Add headers and body to webhooks
|
|
"""
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_headers TEXT;")
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_body TEXT;")
|
|
|
|
|
|
async def m006_redux(db):
|
|
"""
|
|
Migrate ID column type to string for UUIDs and migrate existing data
|
|
"""
|
|
# we can simply change the column type for postgres
|
|
if db.type != "SQLITE":
|
|
await db.execute("ALTER TABLE lnurlp.pay_links ALTER COLUMN id TYPE TEXT;")
|
|
else:
|
|
# but we have to do this for sqlite
|
|
await db.execute("ALTER TABLE lnurlp.pay_links RENAME TO pay_links_old")
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE lnurlp.pay_links (
|
|
id TEXT PRIMARY KEY,
|
|
wallet TEXT NOT NULL,
|
|
description TEXT NOT NULL,
|
|
min {db.big_int} NOT NULL,
|
|
max {db.big_int},
|
|
currency TEXT,
|
|
fiat_base_multiplier INTEGER DEFAULT 1,
|
|
served_meta INTEGER NOT NULL,
|
|
served_pr INTEGER NOT NULL,
|
|
webhook_url TEXT,
|
|
success_text TEXT,
|
|
success_url TEXT,
|
|
comment_chars INTEGER DEFAULT 0,
|
|
webhook_headers TEXT,
|
|
webhook_body TEXT
|
|
);
|
|
"""
|
|
)
|
|
|
|
for row in [
|
|
list(row) for row in await db.fetchall("SELECT * FROM lnurlp.pay_links_old")
|
|
]:
|
|
await db.execute(
|
|
"""
|
|
INSERT INTO lnurlp.pay_links (
|
|
id,
|
|
wallet,
|
|
description,
|
|
min,
|
|
served_meta,
|
|
served_pr,
|
|
webhook_url,
|
|
success_text,
|
|
success_url,
|
|
currency,
|
|
comment_chars,
|
|
max,
|
|
fiat_base_multiplier,
|
|
webhook_headers,
|
|
webhook_body
|
|
)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
""",
|
|
(
|
|
row[0],
|
|
row[1],
|
|
row[2],
|
|
row[3],
|
|
row[4],
|
|
row[5],
|
|
row[6],
|
|
row[7],
|
|
row[8],
|
|
row[9],
|
|
row[10],
|
|
row[11],
|
|
row[12],
|
|
row[13],
|
|
row[14],
|
|
),
|
|
)
|
|
|
|
await db.execute("DROP TABLE lnurlp.pay_links_old")
|