-- =====================================================================
-- Siembra las fases 'Queued' y 'ReadyToStart' 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 de Velero que
-- existían en la versión de entonces. Los clusters se actualizaron y
-- Velero 1.18 agregó una cola de backups —un controller nuevo,
-- `backup-queue`— con dos fases que antes no existían:
--
--   Queued        el Backup espera turno; el CR ya está creado pero
--                 Velero todavía no lo empezó
--   ReadyToStart  salió de la cola y está por iniciar
--
-- No son inventos nuestros como 'Expired': vienen tal cual en el
-- status.phase del CR y client_bkps las escribe sin traducir
-- (dispatch/sync.go). Verificado contra el CRD backups.velero.io del
-- cluster deployments-stg-daas-qr, que corre velero/velero:v1.18.2.
--
-- Sin estas filas, StatusIDFor('backup','Queued') no encuentra la fase y
-- cae a su fallback de 'New' DEVOLVIENDO ok=true (store/catalog.go), con
-- un WARN en el log del pod. La columna `phase` queda bien; el status_id
-- apunta a 'New'. Es el mismo síntoma que motivó
-- 2026-08_backup_status_expired.sql.
--
-- No es hipotético: al escribir esto había ~150 filas de backup_tracking
-- con phase='Queued' y status_id de 'New'.
--
-- El tipo `restore` NO se toca a propósito: el CRD restores.velero.io de
-- 1.18 sigue con sus mismas 10 fases y la cola es solo de backups, así
-- que sembrarlas ahí agregaría dos filas que ningún phase real produce.
--
-- OJO al aplicarlo: client_bkps cachea el catálogo 5 horas
-- (store/catalog.go, cacheTTL). El efecto no se ve hasta que ese cache
-- expira o se reinicia el pod; antes de eso el WARN sigue apareciendo y
-- parece que la migración no sirvió.
--
-- Idempotente: si ya existen, no hace nada.
-- =====================================================================

INSERT INTO `status_catalog` (`status`, `status_dsc`, `id_type`, `active`)
SELECT 'Queued',
       'El respaldo está encolado en Velero: el objeto ya se creó pero aún no empieza a ejecutarse. Fase introducida en Velero 1.18.',
       st.StatusTypeID,
       b'1'
FROM `status_type` st
WHERE st.name = 'backup'
  AND NOT EXISTS (
    SELECT 1 FROM `status_catalog` sc
    WHERE sc.status = 'Queued' AND sc.id_type = st.StatusTypeID
  );

INSERT INTO `status_catalog` (`status`, `status_dsc`, `id_type`, `active`)
SELECT 'ReadyToStart',
       'El respaldo salió de la cola de Velero y está por iniciar. Fase introducida en Velero 1.18.',
       st.StatusTypeID,
       b'1'
FROM `status_type` st
WHERE st.name = 'backup'
  AND NOT EXISTS (
    SELECT 1 FROM `status_catalog` sc
    WHERE sc.status = 'ReadyToStart' AND sc.id_type = st.StatusTypeID
  );

-- Verificación (deben quedar 14 filas para el tipo `backup`)
-- 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 IN ('Queued', 'ReadyToStart');
