Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Infra | Código | BD |
---|
Modelo de Dados
Abaixo, segue o modelo de dados proposto para o aplicativo.
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).