-- =====================================================================
-- Tabela: tb_campaign_api (campanha <-> instância de api, N:M com priority)
-- Projeto: f19 — banco w19_clikil41_eleicao
--
-- Permite:
--   - 1 Z-API por apoiador → instância DEDICADA (1 row ligando à
--     campanha do apoiador)
--   - 1 token Claude/ChatGPT global → COMPARTILHADO (1 row em tb_api
--     ligado a N campanhas via N rows aqui)
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_campaign_api` (
  `id_campaign_api`         BIGINT UNSIGNED  NOT NULL AUTO_INCREMENT,
  `id_campaign`             BIGINT UNSIGNED  NOT NULL,
  `id_api`                  BIGINT UNSIGNED  NOT NULL,

  `campaign_api_label`      VARCHAR(150)     DEFAULT NULL,            -- override do api_label neste contexto
  `campaign_api_priority`   TINYINT(1)       NOT NULL DEFAULT 0,       -- 0 normal, 1 preferida (desempate quando há 2+ instâncias do mesmo serviço)
  `campaign_api_status`     TINYINT(1)       NOT NULL DEFAULT 1,
  `campaign_api_assigned_at` DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

  PRIMARY KEY (`id_campaign_api`),
  UNIQUE KEY `uk_ca_pair` (`id_campaign`,`id_api`),
  KEY `ix_ca_campaign` (`id_campaign`),
  KEY `ix_ca_api`      (`id_api`),
  KEY `ix_ca_status`   (`campaign_api_status`),
  CONSTRAINT `fk_ca_campaign` FOREIGN KEY (`id_campaign`) REFERENCES `tb_campaign` (`id_campaign`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_ca_api`      FOREIGN KEY (`id_api`)      REFERENCES `tb_api`      (`id_api`)      ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
