-- Task #376 — Atribuir senders por cliente (Multi-BM).
-- A atribuição deixa de ser por BM inteira e passa a ser por SENDER: o admin
-- escolhe, dentro de cada BM, quais senders cada cliente pode usar. A nova tabela
-- bm_sender_assignments vincula um sender (bm_senders) a um cliente (users).
-- NÃO confundir com sender_assignments (de outro serviço, Infobip).
CREATE TABLE IF NOT EXISTS bm_sender_assignments (
  id varchar PRIMARY KEY DEFAULT gen_random_uuid(),
  sender_id varchar NOT NULL REFERENCES bm_senders(id) ON DELETE CASCADE,
  user_id varchar NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  created_at timestamptz DEFAULT now(),
  CONSTRAINT bm_sender_assignment_uniq UNIQUE (sender_id, user_id)
);

-- Conversão dos dados existentes: cada atribuição por BM vira atribuição de TODOS
-- os senders daquela BM ao mesmo cliente (comportamento idêntico ao de hoje até o
-- admin refinar). Idempotente via ON CONFLICT.
INSERT INTO bm_sender_assignments (sender_id, user_id)
SELECT s.id, a.user_id
FROM bm_client_assignments a
JOIN bm_senders s ON s.bm_id = a.bm_id
ON CONFLICT (sender_id, user_id) DO NOTHING;
