64 lines
3.0 KiB
SQL
64 lines
3.0 KiB
SQL
-- ===============================================================
|
|
-- 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)
|
|
); |