first commit
This commit is contained in:
0
database/blank_file
Normal file
0
database/blank_file
Normal file
23
database/v0/actions/000_delete.sql
Normal file
23
database/v0/actions/000_delete.sql
Normal file
@@ -0,0 +1,23 @@
|
||||
-- Dados de Usuário
|
||||
DROP TABLE IF EXISTS public.usuario_status CASCADE;
|
||||
DROP TABLE IF EXISTS public.usuario CASCADE;
|
||||
|
||||
-- Dados de Empresa
|
||||
DROP TABLE IF EXISTS public.empresa_tipo_pessoa CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_regime_tributario CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_tamanho CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_faturamento_ultimo_ano CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_tipo_unidade CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_inscricao_estadual_substituicao_tributaria CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_certificado_digital_status CASCADE;
|
||||
DROP TABLE IF EXISTS public.empresa_certificado_digital CASCADE;
|
||||
|
||||
-- RBAC
|
||||
DROP TABLE IF EXISTS public.modulo_status CASCADE;
|
||||
DROP TABLE IF EXISTS public.modulo CASCADE;
|
||||
DROP TABLE IF EXISTS public.modulo_acao CASCADE;
|
||||
DROP TABLE IF EXISTS public.modulo_papel CASCADE;
|
||||
DROP TABLE IF EXISTS public.modulo_papel_permissao CASCADE;
|
||||
DROP TABLE IF EXISTS public.usuario_empresa_modulo CASCADE;
|
||||
DROP TABLE IF EXISTS public.usuario_permissao_override CASCADE;
|
||||
7
database/v0/migrations/000_initializing.sql
Normal file
7
database/v0/migrations/000_initializing.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- Exclui schemas existentes
|
||||
DROP SCHEMA IF EXISTS esocial CASCADE;
|
||||
DROP SCHEMA IF EXISTS public CASCADE;
|
||||
|
||||
-- Cria Schemas
|
||||
CREATE SCHEMA IF NOT EXISTS esocial;
|
||||
CREATE SCHEMA IF NOT EXISTS public;
|
||||
180
database/v0/migrations/001_esocial.tabelas.sql
Normal file
180
database/v0/migrations/001_esocial.tabelas.sql
Normal file
@@ -0,0 +1,180 @@
|
||||
-- ===============================================================================================================
|
||||
-- Tabela 01 - Categoria de Trabalhadores
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_01 (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
descricao TEXT NOT NULL,
|
||||
data_inicio DATE NOT NULL,
|
||||
data_fim DATE DEFAULT NULL
|
||||
);
|
||||
|
||||
INSERT INTO esocial.tab_01 (id, descricao, data_inicio, data_fim) VALUES
|
||||
(101, 'Empregado - Geral, inclusive o empregado público da administração direta ou indireta contratado pela CLT', '2014-01-01', NULL),
|
||||
(102, 'Empregado - Trabalhador rural por pequeno prazo da Lei 11.718/2008', '2014-01-01', NULL),
|
||||
(103, 'Empregado - Aprendiz', '2014-01-01', NULL),
|
||||
(104, 'Empregado - Doméstico', '2014-01-01', NULL),
|
||||
(105, 'Empregado - Contrato a termo firmado nos termos da Lei 9.601/1998', '2014-01-01', NULL),
|
||||
(106, 'Trabalhador temporário - Contrato nos termos da Lei 6.019/1974', '2014-01-01', NULL),
|
||||
(107, 'Empregado - Contrato de trabalho Verde e Amarelo - sem acordo para antecipação mensal da multa rescisória do FGTS', '2020-01-01', '2022-12-31'),
|
||||
(108, 'Empregado - Contrato de trabalho Verde e Amarelo - com acordo para antecipação mensal da multa rescisória do FGTS', '2020-01-01', '2022-12-31'),
|
||||
(111, 'Empregado - Contrato de trabalho intermitente', '2014-01-01', NULL),
|
||||
(201, 'Trabalhador avulso portuário', '2014-01-01', NULL),
|
||||
(202, 'Trabalhador avulso não portuário', '2014-01-01', NULL),
|
||||
(301, 'Servidor público titular de cargo efetivo, magistrado, ministro de Tribunal de Contas, conselheiro de Tribunal de Contas e membro do Ministério Público', '2014-01-01', NULL),
|
||||
(302, 'Servidor público ocupante de cargo exclusivo em comissão', '2014-01-01', NULL),
|
||||
(303, 'Exercente de mandato eletivo', '2014-01-01', NULL),
|
||||
(304, 'Servidor público exercente de mandato eletivo, inclusive com exercício de cargo em comissão', '2014-01-01', NULL),
|
||||
(305, 'Servidor público indicado para conselho ou órgão deliberativo, na condição de representante do governo, órgão ou entidade da administração pública', '2014-01-01', NULL),
|
||||
(306, 'Servidor público contratado por tempo determinado, sujeito a regime administrativo especial definido em lei própria', '2014-01-01', NULL),
|
||||
(307, 'Militar dos Estados e Distrito Federal', '2014-01-01', NULL),
|
||||
(308, 'Conscrito', '2014-01-01', '2023-04-25'),
|
||||
(309, 'Agente público - Outros', '2014-01-01', NULL),
|
||||
(310, 'Servidor público eventual', '2014-01-01', NULL),
|
||||
(311, 'Ministros, juízes, procuradores, promotores ou oficiais de justiça à disposição da Justiça Eleitoral', '2014-01-01', NULL),
|
||||
(312, 'Auxiliar local', '2014-01-01', NULL),
|
||||
(313, 'Servidor público exercente de atividade de instrutoria, curso ou concurso, convocado para pareceres técnicos, depoimentos ou aditância no exterior.', '2014-01-01', NULL),
|
||||
(314, 'Militar das Forças Armadas', '2014-01-01', NULL),
|
||||
(401, 'Dirigente sindical - Informação prestada pelo sindicato', '2014-01-01', NULL),
|
||||
(410, 'Trabalhador cedido/exercício em outro órgão/juiz auxiliar - Informação prestada pelo cessionário/destino', '2014-01-01', NULL),
|
||||
(501, 'Dirigente sindical - Segurado especial', '2014-01-01', NULL),
|
||||
(701, 'Contribuinte individual - Autônomo em geral, exceto se enquadrado em uma das demais categorias de contribuinte individual', '2014-01-01', NULL),
|
||||
(711, 'Contribuinte individual - Transportador autônomo de passageiros', '2014-01-01', NULL),
|
||||
(712, 'Contribuinte individual - Transportador autônomo de carga', '2014-01-01', NULL),
|
||||
(721, 'Contribuinte individual - Diretor não empregado, com FGTS', '2014-01-01', NULL),
|
||||
(722, 'Contribuinte individual - Diretor não empregado, sem FGTS', '2014-01-01', NULL),
|
||||
(723, 'Contribuinte individual - Empresário, sócio e membro de conselho de administração ou fiscal', '2014-01-01', NULL),
|
||||
(731, 'Contribuinte individual - Cooperado que presta serviços por intermédio de cooperativa de trabalho', '2014-01-01', NULL),
|
||||
(734, 'Contribuinte individual - Transportador cooperado que presta serviços por intermédio de cooperativa de trabalho', '2014-01-01', NULL),
|
||||
(738, 'Contribuinte individual - Cooperado filiado a cooperativa de produção', '2014-01-01', NULL),
|
||||
(741, 'Contribuinte individual - Microempreendedor individual', '2014-01-01', NULL),
|
||||
(751, 'Contribuinte individual - Magistrado classista temporário da Justiça do Trabalho ou da Justiça Eleitoral que seja aposentado de qualquer regime previdenciário', '2014-01-01', NULL),
|
||||
(761, 'Contribuinte individual - Associado eleito para direção de cooperativa, associação ou entidade de classe de qualquer natureza ou finalidade, bem como o síndico ou administrador eleito para exercer atividade de direção condominial, desde que recebam remuneração', '2014-01-01', NULL),
|
||||
(771, 'Contribuinte individual - Membro de conselho tutelar, nos termos da Lei 8.069/1990', '2014-01-01', NULL),
|
||||
(781, 'Ministro de confissão religiosa ou membro de vida consagrada, de congregação ou de ordem religiosa', '2014-01-01', NULL),
|
||||
(901, 'Estagiário', '2014-01-01', NULL),
|
||||
(902, 'Médico residente, residente em área profissional de saúde ou médico em curso de formação', '2014-01-01', NULL),
|
||||
(903, 'Bolsista', '2014-01-01', NULL),
|
||||
(904, 'Participante de curso de formação, como etapa de concurso público, sem vínculo de emprego/estatutário', '2014-01-01', NULL),
|
||||
(906, 'Beneficiário do Programa Nacional de Prestação de Serviço Civil Voluntário', '2022-01-28', NULL);
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('esocial.tab_01','id'), (SELECT MAX(id) FROM esocial.tab_01));
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Tabela 02 - Financiamento da Aposentadoria Especial e Redução do Tempo de Contribuição
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_02 (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
descricao TEXT NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO esocial.tab_02 (id, descricao) VALUES
|
||||
(1, 'Não ensejador de aposentadoria especial'),
|
||||
(2, 'Ensejador de aposentadoria especial - FAE15_12% (15 anos de contribuição e alíquota de 12%)'),
|
||||
(3, 'Ensejador de aposentadoria especial - FAE20_09% (20 anos de contribuição e alíquota de 9%)'),
|
||||
(4, 'Ensejador de aposentadoria especial - FAE25_06% (25 anos de contribuição e alíquota de 6%)');
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('esocial.tab_02','id'), (SELECT MAX(id) FROM esocial.tab_02));
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Tabela 03 - Natureza das Rubricas da Folha de Pagamento
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_03 (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
nome VARCHAR(255) NOT NULL,
|
||||
descricao TEXT DEFAULT NULL,
|
||||
data_inicio DATE NOT NULL,
|
||||
data_fim DATE DEFAULT NULL,
|
||||
incide_cp SMALLINT DEFAULT 0
|
||||
);
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Tabela 04 - Códigos e Alíquotas de FPAS / Terceiros
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_04_fpas (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
codigo VARCHAR(10) UNIQUE NOT NULL,
|
||||
descricao TEXT NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_04_grupo (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
fpas_id BIGINT NOT NULL REFERENCES esocial.tab_04_fpas(id) ON DELETE CASCADE,
|
||||
nome VARCHAR(100) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_04_item (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
grupo_id BIGINT NOT NULL REFERENCES esocial.tab_04_grupo(id) ON DELETE CASCADE,
|
||||
base_calculo VARCHAR(255) DEFAULT NULL,
|
||||
descricao VARCHAR(255) NOT NULL,
|
||||
codigo_terceiro VARCHAR(10) NOT NULL,
|
||||
aliquota DECIMAL(6,2) NOT NULL,
|
||||
is_total BOOLEAN DEFAULT FALSE,
|
||||
created_at TIMESTAMP DEFAULT NOW(),
|
||||
updated_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- FPAS principal
|
||||
INSERT INTO esocial.tab_04_fpas (id, codigo, descricao) VALUES
|
||||
(1, '507', 'Terceiros - Incidência sobre folha de salários'),
|
||||
(2, '508', 'Terceiros - Outros FPAS Exemplo'); -- adicione outros FPAS se necessário
|
||||
|
||||
-- Grupos dentro do FPAS 507
|
||||
INSERT INTO esocial.tab_04_grupo (id, fpas_id, nome) VALUES
|
||||
(1, 1, 'Contribuição Patronal Previdenciária'),
|
||||
(2, 1, 'Segurados em Condições Especiais'),
|
||||
(3, 1, 'Contribuição Terceiros');
|
||||
|
||||
-- Itens do grupo 1 - Contribuição Patronal Previdenciária
|
||||
INSERT INTO esocial.tab_04_item (id, grupo_id, base_calculo, descricao, codigo_terceiro, aliquota, is_total) VALUES
|
||||
(1, 1, 'Salário de Contribuição', 'INSS Patronal', '100', 20.00, FALSE),
|
||||
(2, 1, 'Salário de Contribuição', 'INSS Patronal – RAT', '101', 1.00, FALSE),
|
||||
(3, 1, 'Salário de Contribuição', 'INSS Patronal – Terceiros', '102', 5.80, FALSE),
|
||||
(4, 1, 'Salário de Contribuição', 'INSS Patronal – Total', '999', 26.80, TRUE);
|
||||
|
||||
-- Itens do grupo 2 - Segurados em Condições Especiais
|
||||
INSERT INTO esocial.tab_04_item (id, grupo_id, base_calculo, descricao, codigo_terceiro, aliquota, is_total) VALUES
|
||||
(5, 2, 'Salário de Contribuição', 'INSS Especial - Aposentadoria Especial 15 anos', '200', 12.00, FALSE),
|
||||
(6, 2, 'Salário de Contribuição', 'INSS Especial - Aposentadoria Especial 20 anos', '201', 9.00, FALSE),
|
||||
(7, 2, 'Salário de Contribuição', 'INSS Especial - Aposentadoria Especial 25 anos', '202', 6.00, FALSE);
|
||||
|
||||
-- Itens do grupo 3 - Contribuição Terceiros
|
||||
INSERT INTO esocial.tab_04_item (id, grupo_id, base_calculo, descricao, codigo_terceiro, aliquota, is_total) VALUES
|
||||
(8, 3, 'Salário de Contribuição', 'SESI', '300', 1.50, FALSE),
|
||||
(9, 3, 'Salário de Contribuição', 'SENAI', '301', 1.00, FALSE),
|
||||
(10, 3, 'Salário de Contribuição', 'SESC', '302', 0.50, FALSE),
|
||||
(11, 3, 'Salário de Contribuição', 'TOTAL TERCEIROS', '999', 3.00, TRUE);
|
||||
|
||||
-- Tabelas do FPAS / Terceiros
|
||||
SELECT setval(pg_get_serial_sequence('esocial.tab_04_fpas','id'), (SELECT MAX(id) FROM esocial.tab_04_fpas));
|
||||
SELECT setval(pg_get_serial_sequence('esocial.tab_04_grupo','id'), (SELECT MAX(id) FROM esocial.tab_04_grupo));
|
||||
SELECT setval(pg_get_serial_sequence('esocial.tab_04_item','id'), (SELECT MAX(id) FROM esocial.tab_04_item));
|
||||
|
||||
-- Índices para otimização de consultas
|
||||
CREATE INDEX IF NOT EXISTS idx_tab_04_fpas_codigo ON esocial.tab_04_fpas (codigo);
|
||||
CREATE INDEX IF NOT EXISTS idx_tab_04_grupo_fpas_id ON esocial.tab_04_grupo (fpas_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_tab_04_item_grupo_id ON esocial.tab_04_item (grupo_id);
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Tabela 05 - Tipos de Inscrição
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS esocial.tab_05 (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
descricao VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
-- Inserindo os dados
|
||||
INSERT INTO esocial.tab_05 (id, descricao) VALUES
|
||||
(1, 'CNPJ (Cadastro Nacional da Pessoa Jurídica)'),
|
||||
(2, 'CPF (Cadastro de Pessoas Físicas)'),
|
||||
(3, 'CAEPF (Cadastro de Atividade Econômica de Pessoa Física)'),
|
||||
(4, 'CNO (Cadastro Nacional de Obra)'),
|
||||
(5, 'CGC (Cadastro Geral de Contribuintes)'),
|
||||
(6, 'CEI (Cadastro Específico do INSS)');
|
||||
|
||||
-- Atualizando a sequência depois do insert
|
||||
SELECT setval(pg_get_serial_sequence('esocial.tab_05','id'), (SELECT MAX(id) FROM esocial.tab_05));
|
||||
105
database/v0/migrations/002_public.empresa.sql
Normal file
105
database/v0/migrations/002_public.empresa.sql
Normal file
@@ -0,0 +1,105 @@
|
||||
-- ===============================================================================================================
|
||||
-- Status da Empresa
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS public.empresa_status (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
descricao VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO public.empresa_status (id, descricao) VALUES
|
||||
(1, 'Ativa'),
|
||||
(2, 'Inativa'),
|
||||
(3, 'Pendente'),
|
||||
(4, 'Suspensa');
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('public.empresa_status','id'), (SELECT MAX(id) FROM public.empresa_status));
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Empresa Tipo Unidade
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS public.empresa_tipo_unidade (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
descricao VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO public.empresa_tipo_unidade (id, descricao) VALUES
|
||||
(1, 'Matriz'),
|
||||
(2, 'Filial');
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('public.empresa_tipo_unidade','id'), (SELECT MAX(id) FROM public.empresa_tipo_unidade));
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Empresa
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS public.empresa (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
uuid UUID NOT NULL UNIQUE,
|
||||
status_id BIGINT NOT NULL DEFAULT 1 REFERENCES public.empresa_status(id) ON UPDATE CASCADE ON DELETE RESTRICT,
|
||||
|
||||
-- Dados da Empresa
|
||||
tipo_unidade_id BIGINT NOT NULL DEFAULT 1 REFERENCES public.empresa_tipo_unidade(id) ON UPDATE CASCADE ON DELETE RESTRICT,
|
||||
razao_social VARCHAR(255) NOT NULL,
|
||||
nome_fantasia VARCHAR(255) DEFAULT NULL,
|
||||
inscricao_tipo_id BIGINT DEFAULT 1 NOT NULL REFERENCES esocial.tab_05(id) ON UPDATE CASCADE ON DELETE RESTRICT,
|
||||
document_inscricao VARCHAR(20) NOT NULL UNIQUE,
|
||||
inscricao_raiz VARCHAR(20) NOT NULL,
|
||||
|
||||
-- Endereço
|
||||
endereco_codigo_ibge BIGINT DEFAULT NULL,
|
||||
endereco_cep VARCHAR(10) DEFAULT NULL,
|
||||
endereco_logradouro VARCHAR(255) DEFAULT NULL,
|
||||
endereco_numero VARCHAR(20) DEFAULT NULL,
|
||||
endereco_complemento VARCHAR(255) DEFAULT NULL,
|
||||
endereco_bairro VARCHAR(100) DEFAULT NULL,
|
||||
endereco_cidade VARCHAR(100) DEFAULT NULL,
|
||||
endereco_estado VARCHAR(2) DEFAULT NULL,
|
||||
|
||||
-- Contato
|
||||
contato_email VARCHAR(255) DEFAULT NULL,
|
||||
contato_celular VARCHAR(20) DEFAULT NULL,
|
||||
contato_telefone VARCHAR(20) DEFAULT NULL,
|
||||
responsavel_nome VARCHAR(255) DEFAULT NULL,
|
||||
responsavel_cargo VARCHAR(100) DEFAULT NULL,
|
||||
responsavel_email VARCHAR(255) DEFAULT NULL,
|
||||
responsavel_telefone VARCHAR(20) DEFAULT NULL,
|
||||
responsavel_document_cpf CHAR(11) DEFAULT NULL,
|
||||
|
||||
-- Metadados
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT NULL,
|
||||
deleted_at TIMESTAMP DEFAULT NULL
|
||||
);
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Empresa Certificado Digital
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS public.empresa_certificado_digital (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
uuid UUID NOT NULL UNIQUE,
|
||||
|
||||
-- Dados do Certificado Digital
|
||||
tipo_certificado CHAR(2) NOT NULL DEFAULT 'A1',
|
||||
distinguished_name VARCHAR(255) NOT NULL,
|
||||
categoria_certificado VARCHAR(100) NOT NULL DEFAULT 'e-CNPJ',
|
||||
issued_in TIMESTAMP NOT NULL,
|
||||
expires_in TIMESTAMP NOT NULL,
|
||||
file_path TEXT DEFAULT NULL,
|
||||
file_hash CHAR(64) DEFAULT NULL,
|
||||
senha_hash TEXT DEFAULT NULL,
|
||||
pin_hash TEXT DEFAULT NULL,
|
||||
numero_serie VARCHAR(100) NOT NULL UNIQUE,
|
||||
|
||||
-- Metadados
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT NULL,
|
||||
deleted_at TIMESTAMP DEFAULT NULL
|
||||
);
|
||||
|
||||
-- ===============================================================================================================
|
||||
-- Empresa Certificado
|
||||
-- ===============================================================================================================
|
||||
CREATE TABLE IF NOT EXISTS public.empresa_has_certificado_digital (
|
||||
empresa_id BIGINT NOT NULL REFERENCES public.empresa(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
certificado_digital_id BIGINT NOT NULL REFERENCES public.empresa_certificado_digital(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
PRIMARY KEY (empresa_id, certificado_digital_id)
|
||||
);
|
||||
64
database/v0/migrations/003_usuario.sql
Normal file
64
database/v0/migrations/003_usuario.sql
Normal file
@@ -0,0 +1,64 @@
|
||||
-- ===============================================================
|
||||
-- Status do Usuário
|
||||
-- ===============================================================
|
||||
CREATE TABLE IF NOT EXISTS public.usuario_status (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
descricao VARCHAR(100) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO public.usuario_status (id, descricao) VALUES
|
||||
(1, 'Ativo'),
|
||||
(2, 'Inativo'),
|
||||
(3, 'Pendente'),
|
||||
(4, 'Suspenso');
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('public.usuario_status','id'), (SELECT MAX(id) FROM public.usuario_status));
|
||||
|
||||
-- ===============================================================
|
||||
-- Usuário
|
||||
-- ===============================================================
|
||||
CREATE TABLE IF NOT EXISTS public.usuario (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
uuid UUID NOT NULL UNIQUE,
|
||||
status_id BIGINT NOT NULL DEFAULT 1 REFERENCES public.usuario_status(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
is_root SMALLINT NOT NULL DEFAULT 0,
|
||||
nome_completo VARCHAR(255) NOT NULL,
|
||||
nome_usuario VARCHAR(50) NOT NULL UNIQUE,
|
||||
email VARCHAR(255) NOT NULL UNIQUE,
|
||||
senha_hash VARCHAR(255) NOT NULL,
|
||||
need_update_password SMALLINT NOT NULL DEFAULT 1,
|
||||
days_to_expire_password BIGINT NOT NULL DEFAULT 60,
|
||||
last_password_update TIMESTAMP DEFAULT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT NULL,
|
||||
deleted_at TIMESTAMP DEFAULT NULL
|
||||
);
|
||||
|
||||
INSERT INTO public.usuario (id, uuid, status_id, is_root, nome_completo, nome_usuario, email, senha_hash, need_update_password, days_to_expire_password, last_password_update) VALUES
|
||||
(1, '0199f8dd-3a65-7c11-bdf2-ba3294f4c28e', 1, 1, 'Claudecio Martins', 'cjunior', 'contato@claudecio.is-a.dev', '$argon2id$v=19$m=65536,t=4,p=1$cFFXL3VVREREM1R5Szg1Nw$K6u1cUbTCeTMDHT3iP93uRtMfc5PXX6NpC1C2I5peHc', -1, -1, NULL);
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('public.usuario','id'), (SELECT MAX(id) FROM public.usuario));
|
||||
|
||||
-- ===============================================================
|
||||
-- Token Acesso Usuário
|
||||
-- ===============================================================
|
||||
CREATE TABLE IF NOT EXISTS public.usuario_token (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
usuario_id BIGINT NOT NULL REFERENCES public.usuario(id) ON UPDATE CASCADE ON DELETE RESTRICT,
|
||||
usuario_ip VARCHAR(45) NOT NULL,
|
||||
usuario_user_agent TEXT NOT NULL,
|
||||
token TEXT NOT NULL UNIQUE,
|
||||
is_revoked SMALLINT NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
revoked_at TIMESTAMP DEFAULT NULL
|
||||
);
|
||||
|
||||
-- ===============================================================
|
||||
-- Relacionamento USUARIO <-> EMPRESA Para quais empresas o usuario tem acesso
|
||||
-- ===============================================================
|
||||
CREATE TABLE IF NOT EXISTS public.usuario_empresa (
|
||||
empresa_id BIGINT NOT NULL REFERENCES public.empresa(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
usuario_id BIGINT NOT NULL REFERENCES public.usuario(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
||||
PRIMARY KEY (empresa_id, usuario_id)
|
||||
);
|
||||
Reference in New Issue
Block a user