-- #############################################################################
--  ⚠ SUPERSEDIDO — NO EJECUTAR EN INSTALACIONES NUEVAS
--
--  Este script sembraba los dos alias de la purga SIN id explícito, cuando la app
--  resolvía la acción por alias con `Bitacora::registrarPorAlias()`. Ese método ya
--  no existe: hoy la bitácora se escribe por id con el helper `bitacora()`, y los
--  ids tienen que coincidir con los de rsv_bitacoraaccion_portal.sql.
--
--  ⇒ USAR EN SU LUGAR: database/sql/rsv_bitacoraaccion_portal.sql
--    (siembra estas dos filas con los ids 7 y 8, más las cinco de invitados).
--
--  Se conserva solo como registro de lo que se ejecutó en su momento. Si ya se
--  corrió en algún esquema, esas dos filas llevan los alias punteados de abajo
--  ('reservaciones.reservacion.purgar' / 'invitados.solicitud.purgar'), que se
--  cambiaron por texto legible —'Purgar reservación' y 'Purgar solicitud'— para
--  igualar el estilo del resto del catálogo. Hay que corregir esas dos filas a
--  mano —alias e ids 7 y 8— según rsv_bitacoraaccion_portal.sql.
-- #############################################################################

-- =============================================================================
--  CATÁLOGO DE BITÁCORA — ACCIONES DE LA PURGA DEL HISTÓRICO
--  Proyecto : CL032BACK (portal público)   Esquema: asturias_api
--  Archivo  : database/sql/rsv_bitacoraaccion_purga.sql
--  Fecha    : 2026-08-20
-- =============================================================================
--
--  PARA QUÉ
--  --------
--  `PurgarHistoricoPortal` deja un asiento en `rsv_bitacora` por cada registro que
--  elimina. `rsv_bitacora.idBitacoraAccion` tiene FK a `rsv_bitacoraaccion`
--  (fk_bitacora_accion, RESTRICT), y la app resuelve el id por ALIAS a través de
--  `Bitacora::registrarPorAlias()`.
--
--  SIN ESTAS DOS FILAS LA PURGA FUNCIONA IGUAL PERO NO DEJA RASTRO.
--  `registrarPorAlias()` es NO-FATAL a propósito: si el alias no está en el catálogo
--  simplemente no escribe y sigue. Eso está bien para no tumbar un flujo de negocio,
--  pero aquí significaría borrar datos personales sin constancia de que ocurrió, que
--  es exactamente lo que el asiento viene a evitar.
--
--  ⇒ EJECUTAR ESTE SCRIPT ANTES DE LA PRIMERA CORRIDA REAL DEL COMANDO.
--     (Con `--dry-run` no hace falta: la simulación no escribe bitácora.)
--
--  POR QUÉ EL DETALLE NO LLEVA DATOS PERSONALES
--  --------------------------------------------
--  El asiento guarda folio, estado, fecha de salida y origen — nunca nombres de
--  invitados ni CURP. Un borrado de datos personales sin rastro es un problema de
--  auditoría; un rastro que reintroduce los datos borrados, también.
--
--  IDEMPOTENCIA
--  ------------
--  `bitacoraAccionAlias` NO tiene índice UNIQUE en el esquema, así que no se puede
--  usar INSERT ... ON DUPLICATE KEY. El INSERT va condicionado con un SELECT sobre
--  la propia tabla: ejecutar el script dos veces no duplica filas.
--
--  CÓMO EJECUTAR
--  -------------
--    mysql -u USUARIO -p asturias_api < rsv_bitacoraaccion_purga.sql
--    o abrir y ejecutar todo en HeidiSQL / DBeaver / Workbench / phpMyAdmin.
--
--  Referencia: PROPUESTA_PURGA_HISTORICO_PORTAL.md
-- =============================================================================


INSERT INTO `rsv_bitacoraaccion`
  (`bitacoraAccionAlias`, `bitacoraAccionDescripcion`, `bitacoraAccionEntidad`, `bitacoraAccionCampo`)
SELECT
  'reservaciones.reservacion.purgar',
  'Purga automática de una reservación vencida (histórico del portal)',
  'rsv_reservacion',
  'idReservacion'
FROM DUAL
WHERE NOT EXISTS (
  SELECT 1 FROM `rsv_bitacoraaccion`
   WHERE `bitacoraAccionAlias` = 'reservaciones.reservacion.purgar'
);

INSERT INTO `rsv_bitacoraaccion`
  (`bitacoraAccionAlias`, `bitacoraAccionDescripcion`, `bitacoraAccionEntidad`, `bitacoraAccionCampo`)
SELECT
  'invitados.solicitud.purgar',
  'Purga automática de una solicitud de invitados vencida, con sus documentos',
  'inv_solicitud',
  'idSolicitud'
FROM DUAL
WHERE NOT EXISTS (
  SELECT 1 FROM `rsv_bitacoraaccion`
   WHERE `bitacoraAccionAlias` = 'invitados.solicitud.purgar'
);


-- =============================================================================
--  VERIFICACIÓN (debe devolver exactamente 2 filas)
-- =============================================================================
-- SELECT `idBitacoraAccion`, `bitacoraAccionAlias`, `bitacoraAccionEntidad`
--   FROM `rsv_bitacoraaccion`
--  WHERE `bitacoraAccionAlias` IN ('reservaciones.reservacion.purgar', 'invitados.solicitud.purgar');
-- =============================================================================
--  FIN DEL SCRIPT
-- =============================================================================
