-- Task #345 — Usina Multi-BM: throttle por segundo + fallback de template.
-- (1) Coluna de teto de mensagens/segundo nas configs Multi-BM (controle de taxa
--     em processo; 0 = sem limite por segundo, mantendo só o limite diário).
-- (2) Tabela de designação de template principal/alternativo por cliente —
--     usada no disparo para trocar para o alternativo APPROVED quando o principal
--     não estiver aprovado em uma BM elegível.
--
-- IDEMPOTENTE: usa IF NOT EXISTS em coluna, tabela e índices.

ALTER TABLE multibm_configs
  ADD COLUMN IF NOT EXISTS messages_per_second INTEGER NOT NULL DEFAULT 10;

CREATE TABLE IF NOT EXISTS multibm_client_templates (
  id                   VARCHAR      PRIMARY KEY DEFAULT gen_random_uuid(),
  service_id           VARCHAR      NOT NULL REFERENCES services(id) ON DELETE CASCADE,
  user_id              VARCHAR      NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  primary_template_id  VARCHAR      REFERENCES multibm_templates(id) ON DELETE SET NULL,
  fallback_template_id VARCHAR      REFERENCES multibm_templates(id) ON DELETE SET NULL,
  created_at           TIMESTAMPTZ  DEFAULT now(),
  updated_at           TIMESTAMPTZ  DEFAULT now(),
  CONSTRAINT multibm_client_template_uniq UNIQUE (service_id, user_id)
);

CREATE INDEX IF NOT EXISTS idx_multibm_client_templates_service_id ON multibm_client_templates (service_id);
CREATE INDEX IF NOT EXISTS idx_multibm_client_templates_user_id ON multibm_client_templates (user_id);
