-- Task #99 — Sender preferencial vira propriedade do SERVIÇO (boolean por sender).
--
-- Antes: vínculo opcional `infobip_senders.dedicated_to_user_id` apontava para
--        UM cliente "preferencial" (1 sender → 1 user) e os dispatchers caíam
--        no pool comum quando não havia capacidade.
-- Depois: `infobip_senders.preferred` (boolean) marca senders elegíveis no
--         próprio serviço, podendo ser vários. Os dispatchers (HubSpot e
--         Inbound API) usam APENAS senders com preferred=TRUE AND ativo=TRUE
--         AND status='ACTIVE'. Quando vazio, devolvem a mensagem padronizada
--         "Nenhum sender preferencial neste serviço.".
--
-- Esta migração é IDEMPOTENTE e segura para rodar mais de uma vez. A operação
-- equivalente já é aplicada por `npm run db:push --force` a partir do schema
-- Drizzle (shared/schema.ts), mas mantemos este SQL para ambientes que
-- aplicam migrations manualmente em ordem.

BEGIN;

-- 1) Adiciona a nova coluna `preferred` (NOT NULL DEFAULT false).
ALTER TABLE infobip_senders
  ADD COLUMN IF NOT EXISTS preferred BOOLEAN NOT NULL DEFAULT FALSE;

-- 2) Backfill: todo sender que estava "dedicado" a algum cliente vira
--    preferencial do seu serviço. Roda só se a coluna antiga ainda existir.
DO $$
BEGIN
  IF EXISTS (
    SELECT 1
    FROM information_schema.columns
    WHERE table_name = 'infobip_senders'
      AND column_name = 'dedicated_to_user_id'
  ) THEN
    EXECUTE 'UPDATE infobip_senders SET preferred = TRUE WHERE dedicated_to_user_id IS NOT NULL';
    EXECUTE 'ALTER TABLE infobip_senders DROP COLUMN dedicated_to_user_id';
  END IF;
END
$$;

COMMIT;
