rsocials-online/api/src/db/schema.ts

37 lines
1.1 KiB
TypeScript

import { Database } from "bun:sqlite";
export function initDb(path: string): Database {
const db = new Database(path, { create: true });
db.exec("PRAGMA journal_mode = WAL");
db.exec("PRAGMA foreign_keys = ON");
db.exec(`
CREATE TABLE IF NOT EXISTS instances (
id TEXT PRIMARY KEY,
slug TEXT UNIQUE NOT NULL,
display_name TEXT NOT NULL,
primary_domain TEXT NOT NULL,
fallback_domain TEXT NOT NULL,
owner TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'provisioning',
compose_path TEXT,
created_at TEXT DEFAULT (datetime('now')),
updated_at TEXT DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS provision_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
instance_id TEXT NOT NULL REFERENCES instances(id),
action TEXT NOT NULL,
detail TEXT,
created_at TEXT DEFAULT (datetime('now'))
);
CREATE INDEX IF NOT EXISTS idx_instances_slug ON instances(slug);
CREATE INDEX IF NOT EXISTS idx_instances_owner ON instances(owner);
CREATE INDEX IF NOT EXISTS idx_provision_log_instance ON provision_log(instance_id);
`);
return db;
}