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

57 lines
2.4 KiB
SQL

-- ============================================================
-- Del Austral — Migración de base de datos (versión 3)
-- ============================================================
-- Suma: roles de usuario (profesional / administrativa) con
-- patrones propios, e historial de cambios (auditoría).
-- No borra ni modifica datos existentes. Es seguro ejecutarlo
-- aunque ya tengas legajos y un patrón configurado.
--
-- 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;
-- ------------------------------------------------------------
-- 1) USUARIOS (reemplaza el patrón único guardado en
-- "configuracion" por una tabla con uno o más usuarios,
-- cada uno con su propio patrón y rol)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS usuarios (
id INT PRIMARY KEY AUTO_INCREMENT,
nombre_completo VARCHAR(150) NOT NULL,
rol ENUM('profesional', 'administrativa') NOT NULL DEFAULT 'profesional',
patron_hash VARCHAR(255) NOT NULL,
activo TINYINT(1) NOT NULL DEFAULT 1,
creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Migrar el patrón y nombre que ya tenías guardados en "configuracion"
-- hacia la nueva tabla "usuarios", como el primer usuario (profesional).
INSERT INTO usuarios (nombre_completo, rol, patron_hash)
SELECT
COALESCE((SELECT valor FROM configuracion WHERE clave = 'nombre_profesional'), 'Profesional'),
'profesional',
(SELECT valor FROM configuracion WHERE clave = 'patron_hash')
WHERE
(SELECT valor FROM configuracion WHERE clave = 'patron_hash') IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM usuarios WHERE rol = 'profesional');
-- ------------------------------------------------------------
-- 2) HISTORIAL DE CAMBIOS (auditoría)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS historial_cambios (
id INT PRIMARY KEY AUTO_INCREMENT,
usuario_id INT NULL,
usuario_nombre VARCHAR(150) NULL,
accion VARCHAR(60) NOT NULL,
entidad VARCHAR(60) NOT NULL,
entidad_id INT NULL,
descripcion VARCHAR(500) NULL,
creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_historial_entidad (entidad, entidad_id),
INDEX idx_historial_fecha (creado_en)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;