informe-comercial-alfa/app/lib/db.js
2026-09-21 17:11:53 -06:00

35 lines
994 B
JavaScript

import Database from "better-sqlite3";
import path from "node:path";
import fs from "node:fs";
// process.cwd() es /app dentro del contenedor (WORKDIR /app en el Dockerfile),
// donde Coolify monta el volumen persistente en /app/data.
function createDb() {
const dir = path.join(process.cwd(), "data");
fs.mkdirSync(dir, { recursive: true });
const db = new Database(path.join(dir, "informe.db"));
db.pragma("journal_mode = WAL");
db.exec(`
CREATE TABLE IF NOT EXISTS metas (
email TEXT PRIMARY KEY,
monto REAL NOT NULL,
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS config (
clave TEXT PRIMARY KEY,
valor TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS geo_override (
opportunity_id TEXT PRIMARY KEY,
lat REAL,
lon REAL,
zona TEXT,
depto TEXT
);
`);
return db;
}
const g = globalThis;
const db = g.__informeDb ?? (g.__informeDb = createDb());
export default db;