|
|
|
|
@ -80,6 +80,7 @@ async function openDb(filename: string = 'tasks.db'): Promise<any> {
|
|
|
|
|
if (typeof (dbModule as any).initializeDatabase === 'function') {
|
|
|
|
|
(dbModule as any).initializeDatabase(instance);
|
|
|
|
|
hasTasksTable = true;
|
|
|
|
|
console.info('[web/db] DEV: esquema inicializado (Bun initializeDatabase).');
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.warn('[web/db] No se pudo ejecutar initializeDatabase en dev (Bun):', e);
|
|
|
|
|
@ -108,6 +109,7 @@ async function openDb(filename: string = 'tasks.db'): Promise<any> {
|
|
|
|
|
try {
|
|
|
|
|
compat.prepare(`SELECT 1 FROM tasks LIMIT 1`).get();
|
|
|
|
|
hasTasksTable = true;
|
|
|
|
|
console.info('[web/db] DEV: esquema inicializado (migraciones aplicadas en Node).');
|
|
|
|
|
} catch {}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.warn('[web/db] No se pudieron aplicar migraciones en dev (Node):', e);
|
|
|
|
|
@ -115,26 +117,36 @@ async function openDb(filename: string = 'tasks.db'): Promise<any> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Seed de datos de demo si está habilitado y la tabla está vacía
|
|
|
|
|
if (DEV_AUTOSEED_DB) {
|
|
|
|
|
// Seed de datos de demo si la tabla está vacía (por defecto habilitado en dev)
|
|
|
|
|
try {
|
|
|
|
|
let count = 0;
|
|
|
|
|
try {
|
|
|
|
|
let count = 0;
|
|
|
|
|
const row = instance.prepare(`SELECT COUNT(1) AS c FROM tasks`).get() as any;
|
|
|
|
|
count = Number(row?.c ?? 0);
|
|
|
|
|
} catch {
|
|
|
|
|
// Si aún no existe la tabla, no seedear
|
|
|
|
|
count = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const shouldSeed = (typeof DEV_AUTOSEED_DB === 'boolean' ? DEV_AUTOSEED_DB : true);
|
|
|
|
|
if (count === 0 && shouldSeed) {
|
|
|
|
|
console.info('[web/db] DEV: tabla tasks vacía; iniciando seed de demo...');
|
|
|
|
|
try {
|
|
|
|
|
const row = instance.prepare(`SELECT COUNT(1) AS c FROM tasks`).get() as any;
|
|
|
|
|
count = Number(row?.c ?? 0);
|
|
|
|
|
} catch {
|
|
|
|
|
// Si aún no existe la tabla, no seedear
|
|
|
|
|
count = 0;
|
|
|
|
|
}
|
|
|
|
|
if (count === 0) {
|
|
|
|
|
const seed = await import('./dev-seed');
|
|
|
|
|
if (typeof (seed as any).seedDev === 'function') {
|
|
|
|
|
await (seed as any).seedDev(instance, DEV_DEFAULT_USER);
|
|
|
|
|
console.info('[web/db] DEV: seed de demo completado.');
|
|
|
|
|
} else {
|
|
|
|
|
console.warn('[web/db] DEV: módulo dev-seed sin función seedDev; omitiendo seed.');
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.warn('[web/db] DEV: no se pudo cargar/ejecutar dev-seed; omitiendo seed. Error:', e);
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.warn('[web/db] No se pudo realizar el seed de datos de demo:', e);
|
|
|
|
|
} else {
|
|
|
|
|
console.info(`[web/db] DEV: seed no aplicado (count=${count}, DEV_AUTOSEED_DB=${shouldSeed}).`);
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.warn('[web/db] DEV: error al evaluar seed de demo:', e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|