CREATE TABLE IF NOT EXISTS regioes_pessoa (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    empresa_id BIGINT NOT NULL REFERENCES empresas(id),
    codigo VARCHAR(20) NOT NULL,
    descricao VARCHAR(160) NOT NULL,
    ativo BOOLEAN NOT NULL DEFAULT TRUE,
    criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    excluido_em TIMESTAMP NULL,
    CONSTRAINT uq_regioes_pessoa_empresa_codigo UNIQUE (empresa_id, codigo)
);
CREATE INDEX IF NOT EXISTS idx_regioes_pessoa_empresa_ativo ON regioes_pessoa (empresa_id, ativo);

CREATE TABLE IF NOT EXISTS areas_pessoa (
    id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    empresa_id BIGINT NOT NULL REFERENCES empresas(id),
    codigo VARCHAR(20) NOT NULL,
    regiao_id BIGINT NOT NULL REFERENCES regioes_pessoa(id),
    descricao VARCHAR(160) NOT NULL,
    ativo BOOLEAN NOT NULL DEFAULT TRUE,
    criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    excluido_em TIMESTAMP NULL,
    CONSTRAINT uq_areas_pessoa_empresa_codigo UNIQUE (empresa_id, codigo)
);
CREATE INDEX IF NOT EXISTS idx_areas_pessoa_empresa_regiao ON areas_pessoa (empresa_id, regiao_id, ativo);
