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 |
role | RoleEnum | Papel na plataforma |
RoleEnum
ADMIN
REFUGIE
INSTITUTION
LanguageEnum
PORTUGUESE
ENGLISH
SPANISH
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
|
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 |
latitude | Float | Latitude geográfica |
longitude | Float | Longitude geográfica |
userId | String | Referência ao usuário responsável |
status | InstitutionStatusEnum | Situação da instituição |
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
|
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 |
tags
Etiquetas para classificar e organizar assuntos.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador |
subject_id | String | Referência à tabela subjects
|
name | varchar(16) | Nome da tag |
topics
Tópicos de discussão criados por usuários.
Campo | Tipo | Descrição |
---|---|---|
id | String | Identificador 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 |
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_dt | timestamp | Data e hora de criação |
nmb_likes | integer | Número de curtidas |
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 |
TokenTypeEnum
PASSWORD_RESET
EMAIL_VERIFICATION
ACCOUNT_ACTIVATION
Relacionamentos
- Um usuário pode ser um refugiado, instituição ou administrador, dependendo do valor do campo
role
. - 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árias tags e vários tópicos. - Um tópico é criado por um usuário e pertence a um assunto.
- Uma mensagem pertence a um tópico e pode ser uma resposta a outra mensagem.
- Um usuário pode possuir múltiplos tokens de autenticação para diferentes finalidades.