import { DatabaseSync } from "node:sqlite"; const DB_PATH = process.env.RIKX_PLATFORM_DB_PATH || "/rikx-platform-data/app.db"; let _db: DatabaseSync | null = null; export function getPlatformDb(): DatabaseSync { if (!_db) { _db = new DatabaseSync(DB_PATH); _db.exec("PRAGMA journal_mode = WAL"); _db.exec("PRAGMA foreign_keys = ON"); } return _db; } export type PlatformAccount = { id: number; name: string; slug: string; created_at: string; }; export type PlatformUser = { id: number; account_id: number; email: string; name: string; role: string; created_at: string; }; export function listAccounts(): (PlatformAccount & { user_count: number })[] { return getPlatformDb() .prepare( `SELECT a.*, COUNT(u.id) as user_count FROM accounts a LEFT JOIN users u ON u.account_id = a.id GROUP BY a.id ORDER BY a.created_at DESC` ) .all() as (PlatformAccount & { user_count: number })[]; } export function getAccount(id: number): PlatformAccount | undefined { return getPlatformDb() .prepare("SELECT * FROM accounts WHERE id = ?") .get(id) as PlatformAccount | undefined; }