Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Gastrô
  • Wiki
  • Wiki
  • Codigo

Codigo · Changes

Page history
Update Codigo authored Mar 31, 2025 by Rafael Saraiva Mielczarski's avatar Rafael Saraiva Mielczarski
Hide whitespace changes
Inline Side-by-side
Codigo.md
View page @ bb8fb0eb
<table> A divisão da documentação vai ser feita como é feito no projeto: Backend e Frontend
<tr>
<th> [Home](home) </th> ## BACKEND
<th> [Escopo e Cronograma](escopo e cronograma) </th>
<th> [Processo](processo) </th> Nossa estrutura de pastas ficou desse jeito:
<th> [Design/Mockups](design/mockups) </th>
<th> [Configuração](configuracao) </th> - 📂 bite-alegre-backend
<th> [Arquitetura](arquitetura) </th> - 📂 .husky
<th> [Infra](infraestrutura) </th> - 📂 node_modules
<th> [Código](codigo) </th> - 📂 prisma
<th> [BD](banco de dados) </th> - 📂 src
</tr> - 📂 [controllers](#controllers)
</table> - 📂 [repositories](#repositories)
- 📂 [routes](#routes)
# Código - 📂 [services](#services)
\ No newline at end of file - 📂 [utils](#utils)
- 📄 [index.ts](#index-ts)
- 📄 .dockerignore
- 📄 .env
- 📄 .gitignore
- 📄 .prettierignore
- 📄 .prettierrc.json
- 📄 docker-compose.yml
- 📄 Dockerfile
- 📄 eslint.config.js
- 📄 package-lock.json
- 📄 package.json
- 📄 README.md
- 📄 tsconfig.json
---
## Estrutura do Projeto
### 📂 Controllers
A pasta `controllers` contém os controladores da aplicação. Os controladores são responsáveis por receber as requisições dos clientes (frontend do App), processar os dados e chamar os serviços necessários para executar a lógica de negócio. Atuam como intermediários entre as rotas e os serviços.
Aqui estão os controllers e seus métodos:
- [Restaurant Controller](#restaurant-controller)
- [Tag Controller](#tag-controller)
- [User Preferences Controller](#user-preferences-controller)
- [User Controller](#user-controller)
#### 📄 Restaurant Controller (`restaurant-controller.ts`)
...
##### 🛠 Métodos:
...
---
#### 📄 Tag Controller (`tag-controller.ts`)
...
##### 🛠 Métodos:
...
---
#### 📄 User Preferences Controller (`user-preferences-controller.ts`)
Gerencia as requisições relacionadas às preferências dos usuários.
##### 🛠 Métodos:
- **`listByUserId(req: Request, res: Response)`**
Retorna as preferências de um usuário com base no seu ID.
**Parâmetros:**
- `id` (string) – ID do usuário
**Resposta:**
- `200 OK` – Preferências do usuário recuperadas com sucesso, retorna uma lista de tags associadas.
- `500 Internal Server Error` – Falha ao recuperar as preferências do usuário.
**Exemplo de resposta:**
```json
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Local",
"type": "Local",
"userPreferences": [
{
"userId": "abc123",
"preference": "Reservado"
},
{
"userId": "def456",
"preference": "Familiar"
}
]
}
---
#### 📄 User Controller (`user-controller.ts`)
Gerencia as requisições relacionadas aos usuários.
##### 🛠 Métodos:
- **`create(req: Request, res: Response)`**
Cria um novo usuário com os dados fornecidos no corpo da requisição.
**Parâmetros:**
- `profilePhoto` (string) – URL da foto de perfil
- `name` (string) – Nome completo do usuário
- `nickname` (string) – Apelido do usuário
- `email` (string) – Endereço de e-mail
- `password` (string) – Senha do usuário
- `phone` (string) – Número de telefone
- `gender` (enum: `MASCULINO` | `FEMININO` | `NAO_QUERO_INFORMAR` | `OUTRO`) – Gênero do usuário
- `birthDate` (Date) – Data de nascimento
**Resposta:**
- `201 Created` – Usuário criado com sucesso, retorna os dados do usuário.
- `500 Internal Server Error` – Falha ao criar o usuário.
```json
Exemplo de requisição:
{
"profilePhoto": "https://example.com/photo.jpg",
"name": "João Silva",
"nickname": "joaos",
"email": "[email protected]",
"password": "senhaSegura123",
"phone": "+55 11 98765-4321",
"gender": "MASCULINO",
"birthDate": "1990-05-15T00:00:00.000Z"
}
Exemplo de resposta:
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "João Silva",
"nickname": "joaos",
"email": "[email protected]",
"phone": "+55 11 99999-9999",
"gender": "MASCULINO",
"birthDate": "1990-01-01T00:00:00.000Z",
"profilePhoto": "https://example.com/photo.jpg",
"createdAt": "2025-03-30T20:00:00.000Z"
}
---
### 📂 Repositories
A pasta `repositories` armazena os repositórios da aplicação, que são responsáveis por interagir com o banco de dados. Aqui se definem métodos para buscar, salvar e modificar dados usando Prisma(ORM).
Aqui estão os repositórios disponíveis e seus métodos:
- [Restaurant Repository](#restaurant-repository)
- [Tag Repository](#tag-repository)
- [User Preferences Repository](#user-preferences-repository)
- [User Repository](#user-repository)
#### 📄 Restaurant Repository (`restaurant-repository.ts`)
...
##### 🛠 Métodos:
...
---
#### 📄 Tag Repository (`tag-repository.ts`)
...
##### 🛠 Métodos:
...
---
#### 📄 User Preferences Repository (`user-preferences-repository.ts`)
Gerencia as preferências dos usuários.
##### 🛠 Métodos:
- **`getUserPreferencesById(id: string)`**
Pega todas as preferências de um usuário.
---
#### 📄 User Repository (`user-repository.ts`)
Repositório responsável pelo gerenciamento dos dados dos usuários(criação, buscas, etc.).
##### 🛠 Métodos:
- **`createUser( profilePhoto: string, name: string, nickname: string, email: string, hashedPassword: string, phone: string, gender: Gender, birthDate: Date)`**
Cria um novo usuário e salva no banco com a senha criptografada.
- **`findByEmail(email: string)`**
Busca um usuário pelo e-mail.
- **`findAll()`**
Busca todos os usuários existentes.
- **`findById(id: string)`**
Busca um usuário pelo seu Id.
---
### 📂 Routes
A pasta `routes` contém as definições de rotas da API. Essas rotas direcionam as requisições para os respectivos controladores. Para cada entidade cria-se um arquivo de rota separado para organizar melhor o código. Toda as rotas da aplicação se iniciam por `/api`
Aqui estão as routes disponíveis e seus métodos:
- [Restaurant Route](#restaurant-route)
- [Tag Route](#tag-route)
- [User Preferences Route](#user-preferences-route)
- [User Route](#user-route)
#### 📄 Restaurant Route (`restaurant-route.ts`)
...
##### 🛤️ Rotas:
...
---
#### 📄 Tag Route (`tag-route.ts`)
...
##### 🛤️ Rotas:
...
---
#### 📄 User Preferences Route (`user-preferences-route.ts`)
##### 🛤️ Rotas:
- **`GET`** `/user_preferences/:user_id`
Descrição: Retorna todas as preferências de um usuário pelo seu ID.
Parâmetros: `user_id` (string) – Obrigatório
---
#### 📄 User Route (`user-route.ts`)
##### 🛤️ Rotas:
- **`POST`** `/users`
Descrição: cria um novo usuário.
---
### 📂 Services
A pasta `services` contém a lógica(regra de negócio) da aplicação. Os serviços são responsáveis por processar os dados antes de serem armazenados ou retornados ao usuário. Servem para manter os controladores mais enxutos e organizados.
Aqui estão os services disponíveis e seus métodos:
- [Restaurant Service](#restaurant-service)
- [Tag Service](#tag-service)
- [User Preferences Service](#user-preferences-service)
- [User Service](#user-service)
#### 📄 Restaurant Service (`restaurant-service.ts`)
...
##### 🛠 Métodos:
...
---
#### 📄 Tag Service (`tag-service.ts`)
...
##### 🛠 Métodos:
...
---
#### 📄 User Preferences Service (`user-preferences-service.ts`)
Contém métodos para gerenciar a criação de usuários, incluindo a verificação de duplicidade de e-mails e a criação de um novo usuário no banco de dados.
##### 🛠 Métodos:
- **`createUser(profilePhoto: string, name: string, nickname: string, email: string, password: string, phone: string, gender: Gender, birthDate: Date)`**
Cria um novo usuário no sistema. O método realiza as seguintes etapas:
1. Verifica se já existe um usuário com o e-mail fornecido.
2. Se o e-mail já estiver em uso, lança um erro indicando que o e-mail já está sendo utilizado.
3. Se o e-mail não estiver em uso, a senha fornecida é criptografada.
4. O novo usuário é criado no banco de dados com as informações fornecidas.
---
#### 📄 User Service (`user-service.ts`)
Contém métodos para gerenciar as preferências dos usuários.
##### 🛠 Métodos:
- **`getUserPreferences(id: string)`**
Recupera as preferências associadas a um usuário com base no ID fornecido. O método realiza as seguintes etapas:
1. Verifica se o usuário com o ID fornecido existe no banco de dados.
2. Se o usuário não for encontrado, retorna uma mensagem de erro indicando que o usuário não existe.
3. Se o usuário for encontrado, o método busca as preferências associadas a esse usuário.
4. Caso as preferências existam, elas são retornadas. Se não houver preferências, retorna `null`.
---
### 📂 Utils
A pasta `utils` armazena funções auxiliares e utilitárias que podem ser reutilizadas em diferentes partes do código. Aqui você pode colocar funções genéricas, como formatação de datas, manipulação de strings e logs.
💡 **Exemplo:**
Um arquivo `formatDate.ts` pode conter uma função para converter um `Date` em uma string no formato `dd/mm/yyyy`.
---
### 📄 Index.ts
O `index.ts` é o ponto de entrada da aplicação. Aqui se inicia o servidor Express, conecta-se ao banco de dados e carrega todas as rotas.
---
Clone repository
  • Arquitetura
  • BD
  • BancoDeDados
  • Codigo
  • Design
    • Mockups
  • EAP
  • Escopo e Cronograma
  • Infraestrutura
  • Processo
  • Testes automatizados
  • banco de dados
  • configuracao
  • Home