-- =====================================================================
-- Install MAIN — schema do banco CONTROLE/METADADOS (w19_clikil41_main)
-- Projeto: f19
-- Data:    2026-05-27 (Ciclo 02)
--
-- Banco de catálogos/referência. Cross-projeto: outras campanhas no
-- mesmo cPanel podem reusar.
--
-- Tabelas atuais: tb_access (4 níveis fixos).
-- Tabelas futuras: tb_metadata_party, tb_metadata_state/city/country.
-- =====================================================================

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;


-- ===== tb_access =====
-- =====================================================================
-- Tabela: tb_access
-- Banco:  w19_clikil41_main (controle/metadados — fonte canônica)
-- Projeto: f19 — banco operacional w19_clikil41_eleicao referencia por id
--          via TINYINT UNSIGNED SEM CONSTRAINT FK (cross-database).
--          Integridade validada na aplicação.
--
-- Define os 4 níveis de acesso do sistema (decisão 2026-05-27).
-- Como vive em w19_clikil41_main, outros projetos do cPanel (Power BI,
-- futuras campanhas) podem reusar o mesmo catálogo.
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_access` (
  `id_access`          TINYINT UNSIGNED NOT NULL,
  `access_slug`        VARCHAR(20)  NOT NULL,   -- chave técnica (en): admin, manager, candidate, supporter
  `access_name`        VARCHAR(50)  NOT NULL,   -- label exibido em UI (pt): Administrador, Gerente, Candidato, Apoiador
  `access_description` VARCHAR(255) NOT NULL,
  `access_status`      TINYINT(1)   NOT NULL DEFAULT 1,
  `access_created`     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_access`),
  UNIQUE KEY `uk_access_slug` (`access_slug`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Seed obrigatório (4 níveis fixos — não criar outros).
INSERT INTO `tb_access` (`id_access`, `access_slug`, `access_name`, `access_description`) VALUES
  (1, 'admin',     'Administrador', 'Acesso total. Gerencia usuários, campanhas, instâncias e domínios autorizados.'),
  (2, 'manager',   'Gerente',       'Cria automações e gerencia campanhas atribuídas pelo Administrador.'),
  (3, 'candidate', 'Candidato',     'Gerencia sua própria campanha e seus apoiadores.'),
  (4, 'supporter', 'Apoiador',      'Visualiza suas estatísticas de disparos e conversões.')
ON DUPLICATE KEY UPDATE
  `access_name`        = VALUES(`access_name`),
  `access_description` = VALUES(`access_description`);
