-- Task #363 — Template Cluster Multi-BM: preencher variáveis uma única vez.
-- Idempotente: pode rodar mais de uma vez sem erro.
--
-- O template lógico (multibm_templates) passa a ser o Template Base/cluster,
-- carregando uma "assinatura" (var_count + button_url_prefix). O conteúdo físico
-- real de cada BM (nome, corpo, rodapé, cabeçalho, botões) passa a viver em
-- multibm_template_submissions. O cliente preenche as variáveis uma única vez.

-- ─── Assinatura do cluster no Template Base ──────────────────────────────────
ALTER TABLE multibm_templates
  ADD COLUMN IF NOT EXISTS var_count INTEGER,
  ADD COLUMN IF NOT EXISTS button_url_prefix VARCHAR(600);

-- ─── Conteúdo físico por BM na submissão ─────────────────────────────────────
ALTER TABLE multibm_template_submissions
  ADD COLUMN IF NOT EXISTS template_name VARCHAR(150),
  ADD COLUMN IF NOT EXISTS idioma VARCHAR(10),
  ADD COLUMN IF NOT EXISTS categoria VARCHAR(50),
  ADD COLUMN IF NOT EXISTS corpo TEXT,
  ADD COLUMN IF NOT EXISTS rodape VARCHAR(255),
  ADD COLUMN IF NOT EXISTS header_type VARCHAR(20),
  ADD COLUMN IF NOT EXISTS header_content TEXT,
  ADD COLUMN IF NOT EXISTS buttons JSONB;

-- ─── Backfill: submissões anteriores à #363 herdam o conteúdo do Template Base ─
-- Cada BM já agrupada deve ter, no físico, o conteúdo "master" do template lógico
-- (assinaturas batem por construção). Só preenche linhas ainda sem conteúdo.
UPDATE multibm_template_submissions s
SET
  template_name  = COALESCE(s.template_name, t.nome),
  idioma         = COALESCE(s.idioma, t.idioma),
  categoria      = COALESCE(s.categoria, t.categoria),
  corpo          = COALESCE(s.corpo, t.corpo),
  rodape         = COALESCE(s.rodape, t.rodape),
  header_type    = COALESCE(s.header_type, t.header_type),
  header_content = COALESCE(s.header_content, t.header_content),
  buttons        = COALESCE(s.buttons, t.buttons)
FROM multibm_templates t
WHERE s.template_id = t.id
  AND s.corpo IS NULL;
