import { db } from "../data/db.ts"; db.exec(` CREATE TABLE IF NOT EXISTS note ( title TEXT NOT NULL, publishedAt DATETIME, createdAt DATETIME NOT NULL, did TEXT NOT NULL, rkey TEXT NOT NULL, discoverable INTEGER NOT NULL DEFAULT 1, PRIMARY KEY (did, rkey) ); `); try { db.exec( `ALTER TABLE note ADD COLUMN listed INTEGER NOT NULL DEFAULT 1;`, ); } catch { // Column already exists — no-op } try { db.exec( `ALTER TABLE note ADD COLUMN language STRING;`, ); } catch { // Column already exists — no-op } try { db.exec(`ALTER TABLE note RENAME COLUMN listed TO discoverable;`); } catch { // Column already renamed or doesn't exist — no-op } db.exec(` CREATE TABLE IF NOT EXISTS state ( key TEXT PRIMARY KEY, value TEXT NOT NULL ); `); db.exec(` CREATE TABLE IF NOT EXISTS webhook_subscription ( id INTEGER PRIMARY KEY, did TEXT NOT NULL, method TEXT NOT NULL, url TEXT NOT NULL ); `); db.exec(` CREATE INDEX IF NOT EXISTS idx_webhook_subscription_did ON webhook_subscription(did); `); try { db.exec(`ALTER TABLE webhook_subscription ADD COLUMN token TEXT;`); } catch { // Column already exists — no-op } try { db.exec( `ALTER TABLE webhook_subscription ADD COLUMN verb TEXT NOT NULL DEFAULT 'create';`, ); db.exec(` INSERT INTO webhook_subscription (did, method, url, token, verb) SELECT did, method, url, token, 'delete' FROM webhook_subscription WHERE verb = 'create'; `); } catch { // Column already exists — backfill already happened on a previous run. } db.exec(` CREATE INDEX IF NOT EXISTS idx_webhook_subscription_did_verb ON webhook_subscription(did, verb); `); db.close();