-- Migration 026 — Soft-Delete + Evidencia
-- Compatible MySQL 5.7+. Idempotente (seguro de re-ejecutar).
--
-- ROLLBACK: antes de correr, tomar dump completo.
--   mysqldump -h HOST -u USER -p DB > backup_pre_026_$(date +%Y%m%d_%H%M%S).sql
--
-- DOWN (revertir):
--   ALTER TABLE tenants
--       DROP COLUMN deleted_at,
--       DROP COLUMN is_test,
--       DROP COLUMN relationship,
--       DROP COLUMN evidence_consent;
--   DROP INDEX IF EXISTS idx_tenants_deleted_at ON tenants;
--   DROP INDEX IF EXISTS idx_tenants_is_test ON tenants;

DROP PROCEDURE IF EXISTS migrate_026;

DELIMITER //
CREATE PROCEDURE migrate_026()
BEGIN
    DECLARE CONTINUE HANDLER FOR 1060 BEGIN END; -- Duplicate column
    DECLARE CONTINUE HANDLER FOR 1061 BEGIN END; -- Duplicate key
    DECLARE CONTINUE HANDLER FOR 1091 BEGIN END; -- Can't DROP key

    -- Soft-delete: NULL = activo, NOT NULL = eliminado con timestamp
    ALTER TABLE tenants
        ADD COLUMN deleted_at DATETIME NULL DEFAULT NULL
        COMMENT 'Soft-delete: NULL = activo, timestamp = borrado. NUNCA hard DELETE.';

    -- Marca interna: tenant de prueba/demo (excluye de métricas reales)
    ALTER TABLE tenants
        ADD COLUMN is_test TINYINT(1) NOT NULL DEFAULT 0
        COMMENT '1 = tenant de demo/prueba, excluir de stats reales.';

    -- Relación del negocio con Supraide
    -- Requerido por el reporte del hackathon para distinguir revenue
    -- Valores: arms_length | related_party | demo | internal
    ALTER TABLE tenants
        ADD COLUMN relationship VARCHAR(40) NULL DEFAULT NULL
        COMMENT 'demo | pilot | beta | production — clasificación para evidencia XPRIZE.';

    -- Consentimiento explícito para usar las conversaciones como evidencia en el XPRIZE
    ALTER TABLE tenants
        ADD COLUMN evidence_consent TINYINT(1) NOT NULL DEFAULT 0
        COMMENT '1 = el dueño dio consentimiento para usar sus datos como evidencia.';

    -- Índices de soporte para queries frecuentes
    ALTER TABLE tenants ADD INDEX idx_tenants_deleted_at (deleted_at);
    ALTER TABLE tenants ADD INDEX idx_tenants_is_test    (is_test);

END //
DELIMITER ;

CALL migrate_026();
DROP PROCEDURE IF EXISTS migrate_026;

-- Verificación
SELECT
    id, name, deleted_at, is_test, relationship, evidence_consent
FROM tenants
ORDER BY id DESC
LIMIT 5;
