-- =====================================================================
-- Siembra la fase 'Expired' para el tipo `backup`
-- Fecha: 2026-08 (aplícalo DESPUÉS de 2026-08_backups_tracking.sql)
--
-- Motivo: 2026-08_backups_tracking.sql sembró las fases REALES de Velero
-- para el tipo `backup` (New, FailedValidation, InProgress, …, Deleting).
-- 'Expired' no es una fase de Velero: es nuestra, igual que 'Paused' y
-- 'Deleted' lo son para `backup_schedule`, y por eso se quedó fuera.
--
-- La usa client_bkps (dispatch/sync.go: markExpiredOrphans) cuando el GC
-- interno de Velero borra un Backup al cumplirse su TTL. Velero no avisa:
-- el CR simplemente deja de aparecer en el listado del schedule. Sin
-- detectarlo, la fila de backup_tracking se quedaría congelada mostrando
-- su último phase conocido (normalmente 'Completed'), como si el backup
-- siguiera existiendo y fuera restaurable, cuando ya no hay nada en el
-- bucket.
--
-- Sin esta fila, StatusIDFor('backup','Expired') no encuentra la fase y
-- cae a su fallback de 'New' DEVOLVIENDO ok=true (store/catalog.go), así
-- que el backup vencido termina guardado con phase='Expired' pero
-- status_id apuntando a 'New'. La columna `phase` queda bien; el
-- status_id, no.
--
-- Idempotente: si ya existe, no hace nada.
-- =====================================================================

INSERT INTO `status_catalog` (`status`, `status_dsc`, `id_type`, `active`)
SELECT 'Expired',
       'El respaldo venció por su TTL y Velero lo eliminó del almacenamiento. La fila se conserva como histórico; ya no puede usarse para restaurar.',
       st.StatusTypeID,
       b'1'
FROM `status_type` st
WHERE st.name = 'backup'
  AND NOT EXISTS (
    SELECT 1 FROM `status_catalog` sc
    WHERE sc.status = 'Expired' AND sc.id_type = st.StatusTypeID
  );

-- Verificación
-- SELECT sc.StatusCatalogID, sc.status, st.name
-- FROM status_catalog sc JOIN status_type st ON st.StatusTypeID = sc.id_type
-- WHERE st.name = 'backup' ORDER BY sc.StatusCatalogID;

-- =====================================================================
-- ROLLBACK (comentado)
-- =====================================================================
-- DELETE sc FROM status_catalog sc
-- JOIN status_type st ON st.StatusTypeID = sc.id_type
-- WHERE st.name = 'backup' AND sc.status = 'Expired';
