import { mkdirSync } from "node:fs";
import { join, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import Database from "better-sqlite3";
import { drizzle } from "drizzle-orm/better-sqlite3";
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
import { env } from "../env.js";
/**
 * SQLite mono-fichier — un serveur = un propriétaire, pas de multi-tenant.
 * Fichiers : <DATA_DIR>/private-server.db (+ WAL). Les médias et miniatures
 * vivent aussi sous DATA_DIR (storage module).
 */
const dataDir = resolve(env.DATA_DIR);
mkdirSync(dataDir, { recursive: true });
const sqlite = new Database(join(dataDir, "private-server.db"));
sqlite.pragma("journal_mode = WAL");
sqlite.pragma("foreign_keys = ON");
export const db = drizzle(sqlite, { logger: env.NODE_ENV === "development" });
/**
 * Dossier des migrations SQL générées par drizzle-kit. Relatif au fichier
 * (dist/core/db/client.js en prod, src/core/db/client.ts en dev) :
 * ../../.. = racine du package, où vit drizzle/.
 */
const migrationsFolder = fileURLToPath(new URL("../../../drizzle", import.meta.url));
/** Applique les migrations au démarrage (serveur et CLI). */
export function runMigrations() {
    migrate(db, { migrationsFolder });
}
/** true pour les violations d'unicité SQLite (email déjà pris, code invité…). */
export function isUniqueViolation(err) {
    return (err.code === "SQLITE_CONSTRAINT_UNIQUE" ||
        err.code === "SQLITE_CONSTRAINT_PRIMARYKEY");
}
//# sourceMappingURL=client.js.map