202 lines
5.2 KiB
Python
202 lines
5.2 KiB
Python
# the migration file is where you build your database tables
|
|
# If you create a new release for your extension ,
|
|
# remember the migration file is like a blockchain, never edit only add!
|
|
|
|
|
|
async def m001_initial(db):
|
|
"""
|
|
Initial templates table.
|
|
"""
|
|
await db.execute(
|
|
"""
|
|
CREATE TABLE myextension.maintable (
|
|
id TEXT PRIMARY KEY NOT NULL,
|
|
wallet TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
total INTEGER DEFAULT 0,
|
|
lnurlpayamount INTEGER DEFAULT 0,
|
|
lnurlwithdrawamount INTEGER DEFAULT 0
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m002_add_timestamp(db):
|
|
"""
|
|
Add timestamp to templates table.
|
|
"""
|
|
await db.execute(
|
|
f"""
|
|
ALTER TABLE myextension.maintable
|
|
ADD COLUMN created_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now};
|
|
"""
|
|
)
|
|
|
|
|
|
async def m003_create_dca_clients(db):
|
|
"""
|
|
Create DCA clients table.
|
|
"""
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE myextension.dca_clients (
|
|
id TEXT PRIMARY KEY NOT NULL,
|
|
user_id TEXT NOT NULL,
|
|
wallet_id TEXT NOT NULL,
|
|
dca_mode TEXT NOT NULL DEFAULT 'flow',
|
|
fixed_mode_daily_limit INTEGER,
|
|
status TEXT NOT NULL DEFAULT 'active',
|
|
created_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now},
|
|
updated_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now}
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m004_create_dca_deposits(db):
|
|
"""
|
|
Create DCA deposits table.
|
|
"""
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE myextension.dca_deposits (
|
|
id TEXT PRIMARY KEY NOT NULL,
|
|
client_id TEXT NOT NULL,
|
|
amount INTEGER NOT NULL,
|
|
currency TEXT NOT NULL DEFAULT 'GTQ',
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
notes TEXT,
|
|
created_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now},
|
|
confirmed_at TIMESTAMP
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m005_create_dca_payments(db):
|
|
"""
|
|
Create DCA payments table.
|
|
"""
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE myextension.dca_payments (
|
|
id TEXT PRIMARY KEY NOT NULL,
|
|
client_id TEXT NOT NULL,
|
|
amount_sats INTEGER NOT NULL,
|
|
amount_fiat INTEGER NOT NULL,
|
|
exchange_rate REAL NOT NULL,
|
|
transaction_type TEXT NOT NULL,
|
|
lamassu_transaction_id TEXT,
|
|
payment_hash TEXT,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
created_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now}
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m006_create_lamassu_config(db):
|
|
"""
|
|
Create Lamassu database configuration table.
|
|
"""
|
|
await db.execute(
|
|
f"""
|
|
CREATE TABLE myextension.lamassu_config (
|
|
id TEXT PRIMARY KEY NOT NULL,
|
|
host TEXT NOT NULL,
|
|
port INTEGER NOT NULL DEFAULT 5432,
|
|
database_name TEXT NOT NULL,
|
|
username TEXT NOT NULL,
|
|
password TEXT NOT NULL,
|
|
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
test_connection_last TIMESTAMP,
|
|
test_connection_success BOOLEAN,
|
|
created_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now},
|
|
updated_at TIMESTAMP NOT NULL DEFAULT {db.timestamp_now}
|
|
);
|
|
"""
|
|
)
|
|
|
|
|
|
async def m007_add_ssh_tunnel_support(db):
|
|
"""
|
|
Add SSH tunnel support to Lamassu configuration table.
|
|
"""
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN use_ssh_tunnel BOOLEAN NOT NULL DEFAULT false;
|
|
"""
|
|
)
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN ssh_host TEXT;
|
|
"""
|
|
)
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN ssh_port INTEGER NOT NULL DEFAULT 22;
|
|
"""
|
|
)
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN ssh_username TEXT;
|
|
"""
|
|
)
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN ssh_password TEXT;
|
|
"""
|
|
)
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN ssh_private_key TEXT;
|
|
"""
|
|
)
|
|
|
|
|
|
async def m008_add_last_poll_tracking(db):
|
|
"""
|
|
Add last poll time tracking to Lamassu configuration table.
|
|
"""
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN last_poll_time TIMESTAMP;
|
|
"""
|
|
)
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN last_successful_poll TIMESTAMP;
|
|
"""
|
|
)
|
|
|
|
|
|
async def m009_add_username_to_dca_clients(db):
|
|
"""
|
|
Add username field to DCA clients table for better user experience.
|
|
"""
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.dca_clients
|
|
ADD COLUMN username TEXT;
|
|
"""
|
|
)
|
|
|
|
|
|
async def m010_add_source_wallet_to_lamassu_config(db):
|
|
"""
|
|
Add source wallet ID to Lamassu configuration table for DCA distributions.
|
|
"""
|
|
await db.execute(
|
|
"""
|
|
ALTER TABLE myextension.lamassu_config
|
|
ADD COLUMN source_wallet_id TEXT;
|
|
"""
|
|
)
|