Fix: solucionar error SQLITE_BUSY y mejorar backend

- Migrar de sqlite3 a better-sqlite3 con conexión persistente
- Configurar WAL mode, busy_timeout y PRAGMAs optimizados
- Implementar transacciones para operaciones bulk
- Corregir error initialLoadComplete en useHospitalStore.ts
- Agregar tablas usuarios y kv faltantes
- Actualizar .gitignore para archivos WAL de SQLite
This commit is contained in:
2026-04-24 02:06:21 -03:00
parent d30dbab8f0
commit e887d66411
8 changed files with 405 additions and 327 deletions
+27
View File
@@ -16,6 +16,14 @@ if (!existsSync(join(__dirname, 'data'))) {
const db = new Database(DB_PATH);
// Configure WAL mode and performance settings
db.pragma('journal_mode = WAL');
db.pragma('busy_timeout = 5000');
db.pragma('synchronous = NORMAL');
db.pragma('cache_size = 1000');
db.pragma('temp_store = MEMORY');
db.pragma('mmap_size = 268435456');
try {
db.exec("ALTER TABLE internaciones ADD COLUMN areaId TEXT;");
} catch (e) {
@@ -23,6 +31,20 @@ try {
}
db.exec(`
CREATE TABLE IF NOT EXISTS usuarios (
id TEXT PRIMARY KEY,
apellido TEXT NOT NULL,
nombre TEXT NOT NULL,
dni TEXT NOT NULL UNIQUE,
fechaNacimiento TEXT,
email TEXT,
rol TEXT,
matriculaProfesional TEXT,
passwordHash TEXT,
areaId TEXT,
fechaCreacion TEXT
);
CREATE TABLE IF NOT EXISTS pacientes (
id TEXT PRIMARY KEY,
apellido TEXT NOT NULL,
@@ -139,6 +161,11 @@ CREATE TABLE IF NOT EXISTS areas (
tipo TEXT,
resultado TEXT
);
CREATE TABLE IF NOT EXISTS kv (
key TEXT PRIMARY KEY,
value TEXT
);
`);
try {