-- =====================================================================
-- Tabela: tb_detail (catálogo de tipos de detalhe — EAV)
-- Projeto: f19 — banco w19_clikil41_eleicao
--
-- Catálogo compartilhado dos tipos de "detalhe extra" que podem
-- pendurar em qualquer entidade (user agora; contact/campaign no futuro).
-- Inspirado em tb_form_field do Cliki, mas simplificado (sem tb_form
-- intermediário — valor liga direto detail ↔ entidade via tb_<X>_detail).
--
-- Sem seed agora (decisão 2026-05-27 #5) — adicionamos sob demanda
-- conforme as features pedirem.
-- =====================================================================

CREATE TABLE IF NOT EXISTS `tb_detail` (
  `id_detail`         SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

  -- Identidade do tipo
  `detail_slug`       VARCHAR(60)  NOT NULL,           -- chave técnica em inglês: 'address_zipcode', 'social_instagram', 'phone_secondary'
  `detail_label`      VARCHAR(100) NOT NULL,           -- label exibido em UI (pt-BR): 'CEP', 'Instagram', 'Telefone secundário'
  `detail_category`   VARCHAR(40)  NOT NULL,           -- agrupador: 'address','contact','social','personal','custom'

  -- Comportamento de UI (espelho enxuto de tb_form_field do Cliki)
  `detail_data_type`  ENUM('string','text','url','phone','email','date','number','json') NOT NULL DEFAULT 'string',
  `detail_placeholder` VARCHAR(200) DEFAULT NULL,      -- texto exibido no input vazio
  `detail_mask`       VARCHAR(50)  DEFAULT NULL,       -- máscara JS: 'phone','cpf','cnpj','cep','date',...
  `detail_options`    JSON         DEFAULT NULL,       -- pra data_type='string' com lista fixa (vira select): ['op1','op2',...]
  `detail_required`   TINYINT(1)   NOT NULL DEFAULT 0,

  -- Operação
  `detail_order`      SMALLINT     NOT NULL DEFAULT 0, -- ordem na UI (dentro da categoria)
  `detail_status`     TINYINT(1)   NOT NULL DEFAULT 1, -- soft-disable
  `detail_created_at` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `detail_updated_at` DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (`id_detail`),
  UNIQUE KEY `uk_detail_slug` (`detail_slug`),
  KEY `ix_detail_category` (`detail_category`),
  KEY `ix_detail_status`   (`detail_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
