|
|
<table>
|
|
|
<tr>
|
|
|
<th> [Home](home) </th>
|
|
|
<th> [Escopo e Cronograma](escopo e cronograma) </th>
|
|
|
<th> [Processo](Processos) </th>
|
|
|
<th> [Design/Mockups](design/mockups) </th>
|
|
|
<th> [Configuração](Configuração do Ambiente) </th>
|
|
|
<th> [Arquitetura](Arquitetura do Projeto) </th>
|
|
|
<th> [Infra](infraestrutura) </th>
|
|
|
<th> [Código](codigo) </th>
|
|
|
<th> [BD](Banco de Dados) </th>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
# 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 |
|
|
|
| email | String | E-mail |
|
|
|
| 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 com `users`.
|
|
|
- A tabela `institutions` também possui um relacionamento 1:1 com `users`, 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.
|
|
|
|
|
|
|
|
|
 |
|
|
\ No newline at end of file |