/** * Database initialization and connection */ import Database from "better-sqlite3"; import { BetterSQLite3Database, drizzle } from "drizzle-orm/better-sqlite3"; import { existsSync, mkdirSync } from "fs"; import { dirname } from "path"; import * as schema from "./schema"; let db: BetterSQLite3Database | null = null; export function getDatabase(): BetterSQLite3Database { if (db) return db; const dbPath = process.env.DATABASE_URL || "./data/opencodehub.db"; // Ensure directory exists const dir = dirname(dbPath); if (!existsSync(dir)) { mkdirSync(dir, { recursive: true }); } const sqlite = new Database(dbPath); sqlite.pragma("journal_mode = WAL"); sqlite.pragma("foreign_keys = ON"); db = drizzle(sqlite, { schema }); return db; } export { schema }; export type Database = BetterSQLite3Database;