-- =====================================================
-- Migration: Módulo de Regras Genérico (Plataforma/Regras)
-- Data: 2026-05-18
-- =====================================================
--
-- Armazena regras de negócio configuráveis por cliente.
-- O campo `configuracao` é JSONB livre — interpretado pelo módulo consumidor.
-- O campo `customerControl` identifica o cliente dono da regra.
-- companyControl=0 significa "aplica a todas as filiais".
-- Block columns são padrão Galaxia — não declarar DEFAULT nem inserir manualmente.
-- =====================================================

CREATE TABLE regras (
    id             SERIAL PRIMARY KEY,

    modulo         VARCHAR(100) NOT NULL,
    regra          VARCHAR(100) NOT NULL,
    acao           VARCHAR(100) NOT NULL,
    configuracao   JSONB        NOT NULL,

    ativo          SMALLINT     NOT NULL DEFAULT 1,

    customerControl INTEGER NOT NULL,
    companyControl  INTEGER NOT NULL DEFAULT 0,

    -- Block padrão Galaxia (preenchido pelo framework)
    data_cadastro       TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
    block_filial_id     INTEGER,
    block_usuario_id    INTEGER,
    usuario_cadastro    VARCHAR(255),
    data_atualizacao    TIMESTAMP WITHOUT TIME ZONE,
    usuario_atualizacao VARCHAR(255),
    block_data          TIMESTAMP WITHOUT TIME ZONE,
    block_quem          VARCHAR(255),
    block               INTEGER,
    block_empresa_id    INTEGER,

    CONSTRAINT uk_regra UNIQUE (modulo, regra, acao, customerControl, companyControl)
);

CREATE INDEX idx_regras_lookup   ON regras (modulo, regra, customerControl, ativo);
CREATE INDEX idx_regras_customer ON regras (customerControl);
