-- 037: Backfill da flag isDynamic nos botões de URL dos Template Bases (Multi-BM)
--
-- A assinatura do cluster ganhou a dimensão "URL dinâmica vs estática"
-- (server/multibmSignature.ts). Bases antigos foram salvos ANTES da flag
-- isDynamic persistir (o Zod a descartava) e guardam só o prefixo na url —
-- sem o backfill eles seriam lidos como "URL estática" e a nova assinatura
-- passaria a excluir do disparo as BMs cujos físicos são dinâmicos ({{1}}).
--
-- Regra: se QUALQUER físico agrupado ao Base tem botão de URL com {{N}} na
-- url (verdade vinda da Infobip), o botão de URL do Base é dinâmico →
-- marca isDynamic=true no jsonb. Bases realmente estáticos não são tocados.
--
-- Aplicar manualmente via psql (padrão do projeto):
--   psql "$DATABASE_URL" -f migrations/037_multibm_base_url_dinamica_backfill.sql

UPDATE multibm_templates t
SET buttons = (
  SELECT jsonb_agg(
    CASE
      WHEN (btn->>'subtype' = 'url'
            OR (btn ? 'url' AND btn->>'group' = 'chamada_para_acao'))
        THEN btn || '{"isDynamic": true}'::jsonb
      ELSE btn
    END
  )
  FROM jsonb_array_elements(t.buttons) AS btn
)
WHERE t.buttons IS NOT NULL
  AND jsonb_typeof(t.buttons) = 'array'
  AND EXISTS (
    SELECT 1
    FROM multibm_template_submissions s
    WHERE s.template_id = t.id
      AND s.buttons IS NOT NULL
      AND jsonb_typeof(s.buttons) = 'array'
      AND EXISTS (
        SELECT 1
        FROM jsonb_array_elements(s.buttons) AS sb
        WHERE sb->>'url' ~ '\{\{\s*\d+\s*\}\}'
      )
  );
