-- =====================================================================
-- MIGRATION 019 (Hotfix — Padronização do título das mídias de demanda)
--
-- Objetivo: prefixar o protocolo da demanda no título editorial das mídias
-- JÁ existentes que estão vinculadas a uma demanda, no formato:
--     PROTOCOLO — TÍTULO ATUAL
-- Ex.: "Sinalização de trânsito" -> "SGG-2026-000009 — Sinalização de trânsito"
--
-- CARACTERÍSTICAS:
--   * IDEMPOTENTE: só atualiza quando o título AINDA NÃO começa com o protocolo.
--     Rodar novamente não gera "SGG-... — SGG-... — ..." nem altera nada.
--   * Só toca em mídias com demand_id preenchido e cuja demanda tem protocolo.
--   * Fallback: se o título estiver vazio/nulo, usa o título da demanda; se este
--     também estiver vazio, usa o nome original do arquivo. Nunca grava só o
--     protocolo sem contexto.
--   * NÃO altera original_name, stored_name, storage_path, arquivo físico,
--     coordenadas, descrição, nem qualquer outra coluna. Só a coluna `title`.
--   * Respeita o limite VARCHAR(200) de media_files.title: se o resultado passar
--     de 200, o TÍTULO é truncado preservando o protocolo e o separador.
--
-- Escopo: dados. Não cria/altera estrutura. Não cria tabela.
-- =====================================================================
SET NAMES utf8mb4;

UPDATE media_files mf
JOIN demands d ON d.id = mf.demand_id
SET mf.title = LEFT(
      CONCAT(
        d.protocol,
        ' — ',
        NULLIF(
          COALESCE(
            NULLIF(TRIM(mf.title), ''),
            NULLIF(TRIM(d.title), ''),
            TRIM(mf.original_name)
          ),
          ''
        )
      ),
      200
    )
WHERE mf.demand_id IS NOT NULL
  AND d.protocol IS NOT NULL
  AND TRIM(d.protocol) <> ''
  -- idempotência: só quando o título ainda NÃO começa com o protocolo
  AND (mf.title IS NULL OR LEFT(TRIM(mf.title), CHAR_LENGTH(TRIM(d.protocol))) <> TRIM(d.protocol));
