import Database from 'better-sqlite3'; import { building } from '$app/environment'; import path from 'node:path'; const dataDir = process.env.DATA_DIR ?? '.'; const dbPath = path.join(dataDir, 'atmo-gifts.db'); function buildTimeDb(): Database.Database { const memDb = new Database(':memory:'); // Minimal schema so that db.prepare() calls in route modules can validate // against real table names during the SvelteKit post-build analysis phase. memDb.exec(` CREATE TABLE giveaways ( at_uri TEXT PRIMARY KEY, did TEXT NOT NULL, rkey TEXT NOT NULL, status TEXT NOT NULL, prizes TEXT NOT NULL, hmac_secret TEXT NOT NULL, ends_at TEXT, created_at TEXT NOT NULL ); CREATE TABLE entries ( at_uri TEXT PRIMARY KEY, giveaway_at_uri TEXT NOT NULL, author_did TEXT NOT NULL, token TEXT NOT NULL, eligible INTEGER NOT NULL, created_at TEXT NOT NULL ); CREATE TABLE draws ( at_uri TEXT PRIMARY KEY, giveaway_at_uri TEXT NOT NULL, prize_id TEXT NOT NULL, entry_at_uri TEXT NOT NULL, status TEXT NOT NULL, drawn_at TEXT NOT NULL ); CREATE TABLE oauth_sessions ( key TEXT PRIMARY KEY, state TEXT NOT NULL, updated_at TEXT NOT NULL ); `); return memDb; } export const db = building ? buildTimeDb() : new Database(dbPath); if (!building) { db.pragma('journal_mode = WAL'); db.pragma('foreign_keys = ON'); }