-- Migration 018 — Directorio público de Vale
-- Compatible MySQL 5.7+. Seguro de re-ejecutar.

DROP PROCEDURE IF EXISTS migrate_018;

DELIMITER //
CREATE PROCEDURE migrate_018()
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

    -- ── Columnas nuevas en tenants ────────────────────────────────────────────

    -- Ciudad del negocio (capturada en onboarding o editada por el dueño/admin)
    ALTER TABLE tenants
        ADD COLUMN ciudad VARCHAR(80) NULL;

    -- Descripción generada por Gemini para el directorio (ES)
    ALTER TABLE tenants
        ADD COLUMN descripcion_dir TEXT NULL;

    -- Descripción generada por Gemini para el directorio (EN)
    ALTER TABLE tenants
        ADD COLUMN descripcion_dir_en TEXT NULL;

    -- Keywords para búsqueda interna del directorio
    ALTER TABLE tenants
        ADD COLUMN dir_keywords TEXT NULL;

    -- Si el negocio aparece en el directorio (1 = visible, 0 = oculto por el admin)
    ALTER TABLE tenants
        ADD COLUMN visible_dir TINYINT(1) NOT NULL DEFAULT 1;

    -- Índices para queries frecuentes del directorio
    ALTER TABLE tenants ADD INDEX idx_dir_ciudad    (ciudad);
    ALTER TABLE tenants ADD INDEX idx_dir_visible   (visible_dir);

    -- ── Fase 2 scaffold: listings_unclaimed ───────────────────────────────────
    -- Detrás de flag DIR_PROSPECTING_ENABLED=false. NO activar todavía.
    CREATE TABLE IF NOT EXISTS listings_unclaimed (
        id                  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        nombre              VARCHAR(160) NOT NULL,
        rubro               VARCHAR(20)  NULL COMMENT 'barberia|odontologia|belleza|general',
        ciudad              VARCHAR(80)  NULL,
        fuente              VARCHAR(60)  NULL COMMENT 'google_places|yelp|manual|etc',
        datos_json          JSON         NULL COMMENT 'datos crudos de la fuente externa',
        descripcion_dir     TEXT         NULL COMMENT 'generada por Gemini al normalizar',
        dir_keywords        TEXT         NULL,
        claimed_by_tenant_id BIGINT UNSIGNED NULL COMMENT 'FK a tenants.id cuando se reclama',
        created_at          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
        updated_at          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
        INDEX idx_lu_rubro   (rubro),
        INDEX idx_lu_ciudad  (ciudad),
        INDEX idx_lu_claimed (claimed_by_tenant_id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

END //
DELIMITER ;

CALL migrate_018();
DROP PROCEDURE IF EXISTS migrate_018;
