first commit
This commit is contained in:
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