104 lines
3.2 KiB
SQL
104 lines
3.2 KiB
SQL
CREATE TABLE IF NOT EXISTS activity (
|
|
id TEXT PRIMARY KEY,
|
|
tenant TEXT NOT NULL,
|
|
created_at INTEGER NOT NULL,
|
|
activity_type TEXT NOT NULL,
|
|
resource_type TEXT NOT NULL,
|
|
resource_id TEXT NOT NULL,
|
|
billed_at INTEGER,
|
|
plan_id TEXT
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS tenant (
|
|
pubkey TEXT PRIMARY KEY,
|
|
nwc_url TEXT NOT NULL DEFAULT '',
|
|
nwc_error TEXT,
|
|
created_at INTEGER NOT NULL,
|
|
billing_anchor INTEGER,
|
|
stripe_customer_id TEXT NOT NULL,
|
|
renewed_at INTEGER
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS relay (
|
|
id TEXT PRIMARY KEY,
|
|
tenant TEXT NOT NULL,
|
|
subdomain TEXT NOT NULL UNIQUE,
|
|
plan TEXT NOT NULL,
|
|
status TEXT NOT NULL,
|
|
synced INTEGER NOT NULL DEFAULT 0,
|
|
sync_error TEXT NOT NULL DEFAULT '',
|
|
info_name TEXT NOT NULL DEFAULT '',
|
|
info_icon TEXT NOT NULL DEFAULT '',
|
|
info_description TEXT NOT NULL DEFAULT '',
|
|
policy_public_join INTEGER NOT NULL DEFAULT 0,
|
|
policy_strip_signatures INTEGER NOT NULL DEFAULT 0,
|
|
groups_enabled INTEGER NOT NULL DEFAULT 1,
|
|
management_enabled INTEGER NOT NULL DEFAULT 1,
|
|
blossom_enabled INTEGER NOT NULL DEFAULT 0,
|
|
livekit_enabled INTEGER NOT NULL DEFAULT 0,
|
|
push_enabled INTEGER NOT NULL DEFAULT 1,
|
|
FOREIGN KEY (tenant) REFERENCES tenant(pubkey)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS invoice (
|
|
id TEXT PRIMARY KEY,
|
|
tenant_pubkey TEXT NOT NULL,
|
|
status TEXT NOT NULL CHECK (status IN ('open','paid','void','churn')),
|
|
method TEXT CHECK (method IS NULL OR method IN ('nwc','stripe','oob')),
|
|
period_start INTEGER NOT NULL,
|
|
period_end INTEGER NOT NULL,
|
|
created_at INTEGER NOT NULL,
|
|
updated_at INTEGER NOT NULL,
|
|
FOREIGN KEY (tenant_pubkey) REFERENCES tenant(pubkey)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS invoice_item (
|
|
id TEXT PRIMARY KEY,
|
|
invoice_id TEXT,
|
|
activity_id TEXT,
|
|
tenant_pubkey TEXT NOT NULL,
|
|
relay_id TEXT NOT NULL,
|
|
plan TEXT NOT NULL,
|
|
amount INTEGER NOT NULL,
|
|
description TEXT NOT NULL DEFAULT '',
|
|
created_at INTEGER NOT NULL,
|
|
FOREIGN KEY (invoice_id) REFERENCES invoice(id),
|
|
FOREIGN KEY (tenant_pubkey) REFERENCES tenant(pubkey)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS bolt11 (
|
|
id TEXT PRIMARY KEY,
|
|
invoice_id TEXT NOT NULL,
|
|
lnbc TEXT NOT NULL,
|
|
msats INTEGER NOT NULL,
|
|
created_at INTEGER NOT NULL,
|
|
expires_at INTEGER NOT NULL,
|
|
settled_at INTEGER,
|
|
FOREIGN KEY (invoice_id) REFERENCES invoice(id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS intent (
|
|
id TEXT PRIMARY KEY,
|
|
invoice_id TEXT NOT NULL,
|
|
created_at INTEGER NOT NULL,
|
|
FOREIGN KEY (invoice_id) REFERENCES invoice(id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_relay_tenant ON relay (tenant);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_activity_tenant_created ON activity (tenant, created_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_activity_resource_created ON activity (resource_id, created_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_activity_unbilled ON activity (tenant, created_at) WHERE billed_at IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_invoice_tenant_created ON invoice (tenant_pubkey, created_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_invoice_item_invoice ON invoice_item (invoice_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_invoice_item_outstanding ON invoice_item (tenant_pubkey) WHERE invoice_id IS NULL;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_bolt11_invoice_created ON bolt11 (invoice_id, created_at);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_intent_invoice ON intent (invoice_id);
|