Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Infra | Código | BD |
---|
Banco de Dados Postgres
O projeto Lobo-Guará utiliza o PostgreSQL como sistema gerenciador de banco de dados.
O PostgreSQL é um banco de dados relacional robusto, confiável e amplamente utilizado em aplicações que exigem consistência, integridade e suporte a operações complexas. Ele oferece recursos avançados como controle de concorrência multiversão (MVCC), suporte a transações ACID, extensibilidade com funções e tipos personalizados, além de boa performance em ambientes de produção com grande volume de dados
Entidades
users
Tabela que armazena os dados de todos os usuários da plataforma, incluindo refugiados, administradores e representantes de instituições.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador único do usuário |
name | String | Nome completo |
String | ||
password | String | Senha (criptografada) |
phone | String | Telefone |
city | String | Cidade |
state | String | Estado |
language | LanguageEnum | Idioma preferido |
created_at | DateTime | Data de criação |
deleted_at | DateTime | Data de exclusão (soft delete) |
updated_at | DateTime | Última atualização |
last_login | DateTime | Último login |
role | RoleEnum | Papel na plataforma |
refugie | Refugie | Objeto com os dados de refugiado (se houver) |
institution | Institution | Objeto com os dados da instituição (se houver) |
admin | Admin | Objeto com os dados de admin (se houver) |
topics | Topic[] | Lista de tópicos criados pelo usuário |
messages | Message[] | Lista de mensagens criadas pelo usuário |
auth_tokens | AuthToken[] | Lista de tokens de autenticação do usuário |
TwoFactor | TwoFactor | Configuração de autenticação em duas etapas |
RoleEnum
ADMIN
REFUGIE
INSTITUTION
LanguageEnum
PORTUGUESE
ENGLISH
SPANISH
FRENCH
refugies
Contém informações específicas de usuários com papel de refugiado.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador do refugiado |
userId | String | Referência à tabela users
|
user | User | Objeto com os dados do usuário relacionado |
institutions
Instituições que oferecem apoio ou oportunidades a refugiados.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador da instituição |
cnpj | String | CNPJ da organização |
userId | String | Referência ao usuário responsável |
status | InstitutionStatusEnum | Situação da instituição |
user | User | Objeto com os dados do usuário relacionado |
InstitutionStatusEnum
WAITING
ACTIVE
INACTIVE
admins
Armazena usuários com papel administrativo no sistema.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador do admin |
userId | String | Referência à tabela users
|
user | User | Objeto com os dados do usuário relacionado |
subjects
Assuntos gerais da comunidade, usados como categorias nos tópicos.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador |
name | varchar(16) | Nome do assunto |
description | varchar(256) | Descrição do assunto |
created_at | DateTime | Data de criação do assunto |
topics | Topic[] | Lista de tópicos vinculados |
topics
Tópicos de discussão criados por usuários.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador do tópico |
title | String | Título do tópico |
subject_id | String | Referência ao assunto |
author_id | String | Usuário criador |
description | varchar(1000) | Conteúdo do tópico |
views | integer | Quantidade de visualizações |
subject | Subject | Objeto com os dados do assunto relacionado |
author | User | Objeto com os dados do autor |
created_at | DateTime | Data de criação |
updated_at | DateTime | Última atualização |
deleted_at | DateTime | Data de exclusão |
is_deleted | Boolean | Indicador lógico de exclusão |
messages
Mensagens em tópicos, podendo ser respostas a outras mensagens.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador da mensagem |
topic_id | String | Referência ao tópico |
parent_id | String | Mensagem pai (para replies) |
author_id | String | Autor da mensagem |
content | varchar(1000) | Texto da mensagem |
creation_at | DateTime | Data e hora de criação |
nmb_likes | integer | Número de curtidas |
image_url | String | URL de imagem opcional |
deleted | Boolean | Indicador lógico de exclusão |
deleted_at | DateTime | Data de exclusão (soft delete) |
topic | Topic | Objeto com os dados do tópico |
parent | Message? | Objeto da mensagem pai (se houver) |
children | Message[] | Lista de respostas desta mensagem |
auth_tokens
Tokens de autenticação utilizados para operações específicas.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador |
token | String | Valor do token |
user_id | String | Referência ao usuário |
type | TokenTypeEnum | Tipo do token |
expires_at | DateTime | Expiração |
created_at | DateTime | Data de criação |
used_at | DateTime | Data de uso |
validated | Boolean | Indica se o token já foi validado |
user | User | Objeto com os dados do usuário |
TokenTypeEnum
PASSWORD_RESET
EMAIL_VERIFICATION
ACCOUNT_ACTIVATION
help_centers
Centros de apoio geográficos cadastrados na plataforma.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador único do centro |
name | String | Nome do centro (único) |
latitude | Float | Latitude geográfica |
longitude | Float | Longitude geográfica |
resume | String | Descrição resumida do centro |
created_at | DateTime | Data de criação do registro |
updated_at | DateTime | Data da última atualização |
deleted_at | DateTime | Data de exclusão (soft delete) |
two_factor
Dados de autenticação em dois fatores.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador do registro |
user_id | String | Referência ao usuário (users.id ) |
code | String | Código de autenticação |
created_at | DateTime | Data de criação |
expires_at | DateTime | Data de expiração automática (5 minutos) |
deleted_at | DateTime | Data de exclusão (soft delete) |
user | User | Objeto com os dados do usuário |
Relacionamentos
- Um usuário pode ser um refugiado, instituição ou administrador, dependendo do valor do campo
role
(relacionamentos 1:1 viaRefugie
,Institution
ouAdmin
). - Um usuário pode criar vários tópicos (
User.topics
→Topic.author_id
). - Um usuário pode criar várias mensagens (
User.messages
→Message.author_id
). - Um usuário pode ter múltiplos tokens de autenticação (
User.authTokens
→AuthToken.user_id
). - Um usuário pode ter uma configuração de autenticação em duas etapas (
User.TwoFactor
→TwoFactor.user_id
). - A tabela
refugies
se relaciona 1:1 comusers
. - A tabela
institutions
também possui um relacionamento 1:1 comusers
, indicando o representante da instituição. - A tabela
admins
relaciona administradores a usuários. - Um assunto (
subject
) pode possuir vários tópicos (Topic.subject_id
). - Um tópico pode ter várias mensagens (
Message.topic_id
). - Uma mensagem pode ser resposta a outra mensagem (
Message.parent_id
), criando um relacionamento hierárquico (replies).