diff --git a/patch_dirname_fix.cjs b/patch_dirname_fix.cjs new file mode 100644 index 0000000..9c4eb28 --- /dev/null +++ b/patch_dirname_fix.cjs @@ -0,0 +1,9 @@ +const fs = require('fs'); +let code = fs.readFileSync('server/db.js', 'utf8'); + +code = code.replace( + /const currentDir = typeof currentDir !== 'undefined' \? currentDir : dirname\(fileURLToPath\(import\.meta\.url\)\);/, + `const currentDir = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url));` +); + +fs.writeFileSync('server/db.js', code); diff --git a/patch_schema.cjs b/patch_schema.cjs new file mode 100644 index 0000000..d66c05f --- /dev/null +++ b/patch_schema.cjs @@ -0,0 +1,31 @@ +const fs = require('fs'); +let code = fs.readFileSync('server/db.js', 'utf8'); + +code = code.replace( + / \);\n try \{\n db\.prepare\("ALTER TABLE camas ADD COLUMN sector TEXT DEFAULT 'En Área'"\)\.run\(\);\n \} catch\(e\) \{\}\n try \{\n \/\/ Initialize existing beds with their sector\n const rows = db\.prepare\('SELECT id, numero FROM camas WHERE sector IS NULL OR sector = "En Área"'\)\.all\(\);\n for \(const row of rows\) \{\n if \(\!row\.numero\) continue;\n const salaStr = String\(row\.numero\)\.trim\(\)\.split\('-'\)\[0\]\.trim\(\);\n const salaNum = parseInt\(salaStr, 10\);\n let s = 'En Área';\n if \(\!isNaN\(salaNum\)\) \{\n if \(salaNum >= 300 && salaNum < 400 && salaNum % 2 !== 0\) s = 'Fuera de Área';\n else if \(salaNum >= 400 && salaNum < 500\) s = 'Fuera de Área';\n \}\n db\.prepare\('UPDATE camas SET sector = \? WHERE id = \?'\)\.run\(s, row\.id\);\n \}\n \} catch\(e\) \{\}/, + ` );` +); + +code = code.replace( + /\/\/ Seed default 4 grupos if empty/, + `try { db.exec("ALTER TABLE camas ADD COLUMN sector TEXT DEFAULT 'En Área'"); } catch (_) {} + try { + // Initialize existing beds with their sector + const rows = db.prepare('SELECT id, numero FROM camas WHERE sector IS NULL OR sector = "En Área"').all(); + for (const row of rows) { + if (!row.numero) continue; + const salaStr = String(row.numero).trim().split('-')[0].trim(); + const salaNum = parseInt(salaStr, 10); + let s = 'En Área'; + if (!isNaN(salaNum)) { + if (salaNum >= 300 && salaNum < 400 && salaNum % 2 !== 0) s = 'Fuera de Área'; + else if (salaNum >= 400 && salaNum < 500) s = 'Fuera de Área'; + } + db.prepare('UPDATE camas SET sector = ? WHERE id = ?').run(s, row.id); + } + } catch(e) {} + + // Seed default 4 grupos if empty` +); + +fs.writeFileSync('server/db.js', code); diff --git a/server/db.js b/server/db.js index f8bdfd7..50f6a69 100644 --- a/server/db.js +++ b/server/db.js @@ -4,7 +4,7 @@ import { fileURLToPath } from 'url'; import bcrypt from 'bcryptjs'; import { existsSync, mkdirSync } from 'fs'; -const currentDir = typeof currentDir !== 'undefined' ? currentDir : dirname(fileURLToPath(import.meta.url)); +const currentDir = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(import.meta.url)); const DB_PATH = currentDir + '/data/hospital.db'; // Ensure data directory exists @@ -83,24 +83,6 @@ export function initDb() { internacionId TEXT, sector TEXT DEFAULT 'En Área' ); - try { - db.prepare("ALTER TABLE camas ADD COLUMN sector TEXT DEFAULT 'En Área'").run(); - } catch(e) {} - try { - // Initialize existing beds with their sector - const rows = db.prepare('SELECT id, numero FROM camas WHERE sector IS NULL OR sector = "En Área"').all(); - for (const row of rows) { - if (!row.numero) continue; - const salaStr = String(row.numero).trim().split('-')[0].trim(); - const salaNum = parseInt(salaStr, 10); - let s = 'En Área'; - if (!isNaN(salaNum)) { - if (salaNum >= 300 && salaNum < 400 && salaNum % 2 !== 0) s = 'Fuera de Área'; - else if (salaNum >= 400 && salaNum < 500) s = 'Fuera de Área'; - } - db.prepare('UPDATE camas SET sector = ? WHERE id = ?').run(s, row.id); - } - } catch(e) {} CREATE TABLE IF NOT EXISTS internaciones ( id TEXT PRIMARY KEY, @@ -267,6 +249,23 @@ export function initDb() { try { db.exec('ALTER TABLE camas ADD COLUMN areaId TEXT;'); } catch (_) {} try { db.exec('ALTER TABLE internaciones ADD COLUMN areaId TEXT;'); } catch (_) {} + try { db.exec("ALTER TABLE camas ADD COLUMN sector TEXT DEFAULT 'En Área'"); } catch (_) {} + try { + // Initialize existing beds with their sector + const rows = db.prepare('SELECT id, numero FROM camas WHERE sector IS NULL OR sector = "En Área"').all(); + for (const row of rows) { + if (!row.numero) continue; + const salaStr = String(row.numero).trim().split('-')[0].trim(); + const salaNum = parseInt(salaStr, 10); + let s = 'En Área'; + if (!isNaN(salaNum)) { + if (salaNum >= 300 && salaNum < 400 && salaNum % 2 !== 0) s = 'Fuera de Área'; + else if (salaNum >= 400 && salaNum < 500) s = 'Fuera de Área'; + } + db.prepare('UPDATE camas SET sector = ? WHERE id = ?').run(s, row.id); + } + } catch(e) {} + // Seed default 4 grupos if empty try { const defaultGrupos = [