del-austral/migracion_v7.sql
2026-06-30 05:43:56 +00:00

41 lines
2.0 KiB
SQL

-- ============================================================
-- Del Austral — Migración de base de datos (versión 7)
-- ============================================================
-- Agrega a la papelera (legajos_eliminados) las columnas
-- profesional_id_original y sede_id_original, para que el
-- Desarrollador pueda filtrar la papelera por profesional/sede
-- y recuperar un legajo asignándolo a otro profesional.
--
-- No borra ni modifica pacientes, sesiones, citas ni adjuntos.
-- Los registros de papelera que ya existían antes de esta
-- migración van a intentar rellenarse automáticamente a partir
-- del JSON guardado (ver el UPDATE al final). Si por la versión
-- de tu MySQL ese paso no funciona, esos registros viejos
-- quedan en NULL — todavía se pueden ver, pero no aparecen al
-- filtrar la papelera por un profesional específico.
--
-- Cómo aplicarlo:
-- 1. Entrá a phpMyAdmin → tu base de datos.
-- 2. Pestaña "SQL" (no "Importar").
-- 3. Pegá todo este archivo y ejecutá.
-- ============================================================
SET NAMES utf8mb4;
ALTER TABLE legajos_eliminados ADD COLUMN profesional_id_original INT NULL AFTER paciente_id_original;
ALTER TABLE legajos_eliminados ADD COLUMN sede_id_original INT NULL AFTER profesional_id_original;
ALTER TABLE legajos_eliminados ADD INDEX idx_papelera_profesional (profesional_id_original);
ALTER TABLE legajos_eliminados ADD INDEX idx_papelera_sede (sede_id_original);
-- Intento de mejor esfuerzo: para los registros que ya existían,
-- rellenamos esas columnas a partir del JSON guardado, donde sea
-- posible (MySQL 5.7+/MariaDB 10.2+ con soporte de JSON_EXTRACT).
-- Si tu versión no soporta estas funciones, esta consulta puede
-- fallar — no afecta el resto de la migración, ya corrida arriba.
UPDATE legajos_eliminados
SET
profesional_id_original = JSON_UNQUOTE(JSON_EXTRACT(datos_json, '$.profesional_id')),
sede_id_original = JSON_UNQUOTE(JSON_EXTRACT(datos_json, '$.sede_id'))
WHERE profesional_id_original IS NULL;