-- 082: Solicitar novo template (autonomia do cliente) — 12/08/2026
--
-- Origem: o ban do número da BM Diamantes. A Meta recategorizou o template
-- `magicreply2_758730` de UTILITY para MARKETING (o MESMO link encurtado em
-- nove lotes) e baniu o número. Já existem a black-list de links, os avisos da
-- Meta por BM e o link estático novo por lote. Faltava a peça que devolve
-- autonomia: o cliente pedir um template com o link DELE, sem depender do
-- administrador.
--
-- Duas mudanças:
--  1) multibm_templates ganha `origem` + `owner_user_id`. O template solicitado
--     vira um Template Base DE VERDADE (aparece na criação de campanha pelo
--     caminho que já existe), mas `owner_user_id` preenchido significa que SÓ
--     aquele cliente o enxerga — o link é o ativo comercial do negócio dele e
--     não pode vazar para outro cliente. NULL = Base da casa, todos veem.
--  2) multibm_template_requests: o recibo de cada pedido (auditoria + limite de
--     2 por dia por dono, porque cada solicitação cria templates REAIS nas BMs
--     e spam de submissão chama atenção da Meta).
--
-- O ANDAMENTO da aprovação não mora aqui: continua em
-- multibm_template_submissions, atualizado pelo webhook `templateStatus`.

BEGIN;

ALTER TABLE multibm_templates
  ADD COLUMN IF NOT EXISTS origem        VARCHAR(24) NOT NULL DEFAULT 'base_casa',
  ADD COLUMN IF NOT EXISTS owner_user_id VARCHAR REFERENCES users(id) ON DELETE SET NULL;

-- Listagem da criação de campanha filtra por dono em todo request do cliente.
CREATE INDEX IF NOT EXISTS idx_multibm_templates_owner
  ON multibm_templates (owner_user_id);

CREATE TABLE IF NOT EXISTS multibm_template_requests (
  id              VARCHAR PRIMARY KEY DEFAULT gen_random_uuid(),
  owner_user_id   VARCHAR      NOT NULL REFERENCES users(id)              ON DELETE CASCADE,
  service_id      VARCHAR      NOT NULL REFERENCES services(id)           ON DELETE CASCADE,
  source_base_id  VARCHAR               REFERENCES multibm_templates(id)  ON DELETE SET NULL,
  created_base_id VARCHAR               REFERENCES multibm_templates(id)  ON DELETE SET NULL,
  config          JSONB,
  status          VARCHAR(20)  NOT NULL DEFAULT 'submetido',
  erro            VARCHAR(500),
  created_at      TIMESTAMPTZ  DEFAULT NOW()
);

-- Conta do dia por dono (limite 2/dia) e listagem "minhas solicitações".
CREATE INDEX IF NOT EXISTS idx_multibm_template_requests_owner_created
  ON multibm_template_requests (owner_user_id, created_at);

COMMIT;
