lnbits-legend/lnbits/extensions/splitpayments/migrations.py

100 lines
2.5 KiB
Python
Raw Normal View History

2022-12-13 20:01:05 +00:00
from lnbits.helpers import urlsafe_short_hash
2022-12-14 00:06:36 +00:00
2021-10-18 12:34:45 +01:00
async def m001_initial(db):
"""
Initial split payment table.
"""
await db.execute(
"""
CREATE TABLE splitpayments.targets (
wallet TEXT NOT NULL,
source TEXT NOT NULL,
percent INTEGER NOT NULL CHECK (percent >= 0 AND percent <= 100),
alias TEXT,
UNIQUE (source, wallet)
);
"""
)
async def m002_float_percent(db):
"""
Add float percent and migrates the existing data.
"""
await db.execute("ALTER TABLE splitpayments.targets RENAME TO splitpayments_old")
await db.execute(
"""
CREATE TABLE splitpayments.targets (
wallet TEXT NOT NULL,
source TEXT NOT NULL,
percent REAL NOT NULL CHECK (percent >= 0 AND percent <= 100),
alias TEXT,
UNIQUE (source, wallet)
);
"""
)
for row in [
list(row)
for row in await db.fetchall("SELECT * FROM splitpayments.splitpayments_old")
]:
await db.execute(
"""
INSERT INTO splitpayments.targets (
wallet,
source,
percent,
alias
)
VALUES (?, ?, ?, ?)
""",
(row[0], row[1], row[2], row[3]),
)
await db.execute("DROP TABLE splitpayments.splitpayments_old")
2022-12-13 20:01:05 +00:00
2022-12-13 20:07:16 +00:00
async def m003_add_id_and_tag(db):
2022-12-13 20:01:05 +00:00
"""
Add float percent and migrates the existing data.
"""
await db.execute("ALTER TABLE splitpayments.targets RENAME TO splitpayments_old")
await db.execute(
"""
CREATE TABLE splitpayments.targets (
2022-12-13 20:11:07 +00:00
id TEXT PRIMARY KEY,
2022-12-13 20:01:05 +00:00
wallet TEXT NOT NULL,
source TEXT NOT NULL,
2022-12-13 20:07:16 +00:00
percent REAL NOT NULL CHECK (percent >= 0 AND percent <= 100),
2022-12-13 20:11:07 +00:00
tag TEXT NOT NULL,
2022-12-13 20:01:05 +00:00
alias TEXT,
UNIQUE (source, wallet)
);
"""
)
for row in [
list(row)
for row in await db.fetchall("SELECT * FROM splitpayments.splitpayments_old")
]:
await db.execute(
"""
INSERT INTO splitpayments.targets (
2022-12-13 20:11:07 +00:00
id,
2022-12-13 20:01:05 +00:00
wallet,
source,
percent,
tag,
alias
)
2022-12-13 20:17:52 +00:00
VALUES (?, ?, ?, ?, ?, ?)
2022-12-13 20:01:05 +00:00
""",
2022-12-14 00:06:36 +00:00
(urlsafe_short_hash(), row[0], row[1], row[2], "", row[3]),
2022-12-13 20:01:05 +00:00
)
2022-12-14 00:06:36 +00:00
await db.execute("DROP TABLE splitpayments.splitpayments_old")