-- =====================================================================
-- Tabela: tb_campaign
-- Projeto: f19 — banco w19_clikil41_eleicao
--
-- Cada linha = uma campanha eleitoral. Vínculo com candidato/manager/
-- supporter vai por tb_campaign_user (com id_access local por campanha).
--
-- Campos mínimos por enquanto — ALTER TABLE depois se precisar
-- (slogan, vice, coligação, estado/cidade, datas de janela, etc).
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_campaign` (
  `id_campaign`           BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,

  -- Identidade
  `campaign_name`         VARCHAR(100)    NOT NULL,                  -- "André Aguiar"
  `campaign_slug`         VARCHAR(120)    NOT NULL,                  -- "andre-aguiar-deputado-2026"
  `campaign_office`       VARCHAR(60)     NOT NULL,                  -- "Deputado Federal", "Senador", "Vereador", "Prefeito"
  `campaign_party_abbr`   VARCHAR(10)     NOT NULL,                  -- "PSDB" (futura FK para tb_metadata_party)
  `campaign_party_number` VARCHAR(10)     DEFAULT NULL,              -- "4523" (número de urna; NULL antes da convenção)
  `campaign_year`         SMALLINT UNSIGNED NOT NULL,                 -- 2026

  -- Branding básico (override do default do tema)
  `campaign_color_hex`    CHAR(7)         NOT NULL DEFAULT '#ff0079',
  `campaign_photo_url`    VARCHAR(500)    DEFAULT NULL,              -- foto principal do candidato (exibida nos cards)

  -- Canais oficiais / presença digital
  `campaign_ig_url`            VARCHAR(500) DEFAULT NULL,             -- perfil Instagram
  `campaign_website_url`       VARCHAR(500) DEFAULT NULL,             -- site oficial
  `campaign_whatsapp_official` VARCHAR(30)  DEFAULT NULL,             -- número +55 21 99999-9999
  `campaign_photo_model_url`   VARCHAR(500) DEFAULT NULL,             -- foto modelo (template p/ futura geração AI
                                                                       --   apoiador+candidato; ver ciclo futuro)

  -- Operação
  `campaign_status`       TINYINT(1)      NOT NULL DEFAULT 1,        -- 1 ativa, 0 pausada, -1 arquivada
  `campaign_created_at`   DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `campaign_updated_at`   DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (`id_campaign`),
  UNIQUE KEY `uk_campaign_slug` (`campaign_slug`),
  KEY `ix_campaign_status` (`campaign_status`),
  KEY `ix_campaign_year`   (`campaign_year`),
  KEY `ix_campaign_party`  (`campaign_party_abbr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
