28 lines
802 B
JavaScript
28 lines
802 B
JavaScript
|
|
import Database from "better-sqlite3";
|
||
|
|
import path from "node:path";
|
||
|
|
import fs from "node:fs";
|
||
|
|
|
||
|
|
// Singleton: evita abrir múltiples conexiones durante el hot-reload de next dev.
|
||
|
|
function createDb() {
|
||
|
|
const dataDir = path.join(process.cwd(), "data");
|
||
|
|
fs.mkdirSync(dataDir, { recursive: true });
|
||
|
|
|
||
|
|
const db = new Database(path.join(dataDir, "nova.db"));
|
||
|
|
db.pragma("journal_mode = WAL");
|
||
|
|
db.exec(`
|
||
|
|
CREATE TABLE IF NOT EXISTS users (
|
||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
|
|
name TEXT NOT NULL DEFAULT '',
|
||
|
|
email TEXT NOT NULL UNIQUE,
|
||
|
|
password TEXT NOT NULL,
|
||
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||
|
|
);
|
||
|
|
`);
|
||
|
|
return db;
|
||
|
|
}
|
||
|
|
|
||
|
|
const g = globalThis;
|
||
|
|
const db = g.__novaDb ?? (g.__novaDb = createDb());
|
||
|
|
|
||
|
|
export default db;
|