|
|
<table>
|
|
|
<tr>
|
|
|
<th> [Home](home) </th>
|
|
|
<th> [Escopo e Cronograma](escopo e cronograma) </th>
|
|
|
<th> [Processo](processo) </th>
|
|
|
<th> [Design/Mockups](design/mockups) </th>
|
|
|
<th> [Configuração](configuracao) </th>
|
|
|
<th> [Arquitetura](arquitetura) </th>
|
|
|
<th> [Infra](infraestrutura) </th>
|
|
|
<th> [Código](codigo) </th>
|
|
|
<th> [BD](banco de dados) </th>
|
|
|
</tr>
|
|
|
<tr>
|
|
|
<th>
|
|
|
|
|
|
[Home](home)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Escopo e Cronograma](escopo%20e%20cronograma)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Processo](processo)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Design/Mockups](design/mockups)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Configuração](configuracao)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Arquitetura](arquitetura)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Infra](infraestrutura)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[Código](codigo)
|
|
|
</th>
|
|
|
<th>
|
|
|
|
|
|
[BD](banco%20de%20dados)
|
|
|
</th>
|
|
|
</tr>
|
|
|
</table>
|
|
|
|
|
|
A divisão da documentação vai ser feita como é feito no projeto: Backend e Frontend
|
... | ... | @@ -19,31 +46,32 @@ A divisão da documentação vai ser feita como é feito no projeto: Backend e F |
|
|
## BACKEND
|
|
|
|
|
|
## Estrutura de Pastas
|
|
|
|
|
|
Essa foi a estrutura de pastas que escolhemos utilizar:
|
|
|
|
|
|
- 📂 bite-alegre-backend
|
|
|
- 📂 .husky
|
|
|
- 📂 node_modules
|
|
|
- 📂 prisma
|
|
|
- 📂 src
|
|
|
- 📂 [controllers](#controllers)
|
|
|
- 📂 [repositories](#repositories)
|
|
|
- 📂 [routes](#routes)
|
|
|
- 📂 [services](#services)
|
|
|
- 📂 [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
|
|
|
- :open_file_folder: bite-alegre-backend
|
|
|
- :open_file_folder: .husky
|
|
|
- :open_file_folder: node_modules
|
|
|
- :open_file_folder: prisma
|
|
|
- :open_file_folder: src
|
|
|
- :open_file_folder: [controllers](#controllers)
|
|
|
- :open_file_folder: [repositories](#repositories)
|
|
|
- :open_file_folder: [routes](#routes)
|
|
|
- :open_file_folder: [services](#services)
|
|
|
- :open_file_folder: [utils](#utils)
|
|
|
- :page_facing_up: [index.ts](#index-ts)
|
|
|
- :page_facing_up: .dockerignore
|
|
|
- :page_facing_up: .env
|
|
|
- :page_facing_up: .gitignore
|
|
|
- :page_facing_up: .prettierignore
|
|
|
- :page_facing_up: .prettierrc.json
|
|
|
- :page_facing_up: docker-compose.yml
|
|
|
- :page_facing_up: Dockerfile
|
|
|
- :page_facing_up: eslint.config.js
|
|
|
- :page_facing_up: package-lock.json
|
|
|
- :page_facing_up: package.json
|
|
|
- :page_facing_up: README.md
|
|
|
- :page_facing_up: tsconfig.json
|
|
|
|
|
|
---
|
|
|
|
... | ... | @@ -51,69 +79,72 @@ Essa foi a estrutura de pastas que escolhemos utilizar: |
|
|
|
|
|
A estrutura do projeto segue o padrão MVC e uma abordagem modular, garantindo melhor organização, manutenção e escalabilidade da aplicação.
|
|
|
|
|
|
Cada seção a seguir detalha os componentes principais de cada diretório e como eles se integram para formar a aplicação. 📌
|
|
|
Cada seção a seguir detalha os componentes principais de cada diretório e como eles se integram para formar a aplicação. :pushpin:
|
|
|
|
|
|
### :open_file_folder: Controllers
|
|
|
|
|
|
### 📂 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)
|
|
|
Aqui estão os controllers e seus métodos:
|
|
|
|
|
|
#### 📄 Restaurant Controller (`restaurant-controller.ts`)
|
|
|
- [Restaurant Controller](#restaurant-controller)
|
|
|
- [Tag Controller](#tag-controller)
|
|
|
- [User Preferences Controller](#user-preferences-controller)
|
|
|
- [User Controller](#user-controller)
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
- **`create(req: Request, res: Response)`**
|
|
|
Cria o restaurante;
|
|
|
#### :page_facing_up: Restaurant Controller (`restaurant-controller.ts`)
|
|
|
|
|
|
**Parâmetros:**
|
|
|
- `req` (Request) Requisição http
|
|
|
- `res` (Response) Resposta http
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
- **`list(req:Request, res: Response)`**
|
|
|
Retorna todos os restaurantes;
|
|
|
- **`create(req: Request, res: Response)`** Cria o restaurante;
|
|
|
|
|
|
**Parâmetros:**
|
|
|
**Parâmetros:**
|
|
|
- `req` (Request) Requisição http
|
|
|
- `res` (Response) Resposta http
|
|
|
- **`list(req:Request, res: Response)`** Retorna todos os restaurantes;
|
|
|
|
|
|
- **`find(req:Request, res: Response)`**
|
|
|
Procura um restaurante pelo seu id;
|
|
|
|
|
|
**Parâmetros:**
|
|
|
**Parâmetros:**
|
|
|
- `req` (Request) Requisição http
|
|
|
- `res` (Response) Resposta http
|
|
|
- **`find(req:Request, res: Response)`** Procura um restaurante pelo seu id;
|
|
|
|
|
|
|
|
|
**Parâmetros:**
|
|
|
- `req` (Request) Requisição http
|
|
|
- `res` (Response) Resposta http
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 Tag Controller (`tag-controller.ts`)
|
|
|
#### :page_facing_up: Tag Controller (`tag-controller.ts`)
|
|
|
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
list: Retorna todas as tags.
|
|
|
- **`list(req: Request, res: Response)`**\
|
|
|
Retorna as tags de acordo com o tipo informado;
|
|
|
|
|
|
**Parâmetros:**
|
|
|
- `req` (Request) Requisição http contendo o parâmetro `type`, que define o tipo de tags a serem retornadas
|
|
|
- `res` (Response) Resposta http
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 User Preferences Controller (`user-preferences-controller.ts`)
|
|
|
Gerencia as requisições relacionadas às preferências dos usuários.
|
|
|
#### :page_facing_up: User Preferences Controller (`user-preferences-controller.ts`)
|
|
|
|
|
|
Gerencia as requisições relacionadas às preferências dos usuários.
|
|
|
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
- **`listByUserId(req: Request, res: Response)`**\
|
|
|
Retorna as preferências de um usuário com base no seu ID.
|
|
|
|
|
|
- **`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
|
|
|
|
|
|
**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.
|
|
|
|
|
|
**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:**
|
|
|
|
|
|
**Exemplo de resposta:**
|
|
|
```json
|
|
|
{
|
|
|
"id": "123e4567-e89b-12d3-a456-426614174000",
|
... | ... | @@ -130,30 +161,32 @@ Gerencia as requisições relacionadas às preferências dos usuários. |
|
|
}
|
|
|
]
|
|
|
}
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 User Controller (`user-controller.ts`)
|
|
|
Gerencia as requisições relacionadas aos usuários.
|
|
|
#### :page_facing_up: User Controller (`user-controller.ts`)
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
Gerencia as requisições relacionadas aos usuários.
|
|
|
|
|
|
- **`create(req: Request, res: Response)`**
|
|
|
Cria um novo usuário com os dados fornecidos no corpo da requisição.
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
**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
|
|
|
- **`create(req: Request, res: Response)`**\
|
|
|
Cria um novo usuário com os dados fornecidos no corpo da requisição.
|
|
|
|
|
|
**Resposta:**
|
|
|
- `201 Created` – Usuário criado com sucesso, retorna os dados do usuário.
|
|
|
- `500 Internal Server Error` – Falha ao criar o usuário.
|
|
|
**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:
|
... | ... | @@ -167,7 +200,7 @@ Gerencia as requisições relacionadas aos usuários. |
|
|
"gender": "MASCULINO",
|
|
|
"birthDate": "1990-05-15T00:00:00.000Z"
|
|
|
}
|
|
|
|
|
|
|
|
|
Exemplo de resposta:
|
|
|
{
|
|
|
"id": "123e4567-e89b-12d3-a456-426614174000",
|
... | ... | @@ -180,193 +213,227 @@ Gerencia as requisições relacionadas aos usuários. |
|
|
"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).
|
|
|
### :open_file_folder: Repositories
|
|
|
|
|
|
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)
|
|
|
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).
|
|
|
|
|
|
#### 📄 Restaurant Repository (`restaurant-repository.ts`)
|
|
|
Repositório responsável pelo gerenciamento dos dados dos restaurantes(criação, buscas, etc.).
|
|
|
Aqui estão os repositórios disponíveis e seus métodos:
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
- **`create( profilePhoto, bannerPhoto, name, description, address, email, password, averagePrice, phone)`**
|
|
|
Cria um novo restaurante e salva no banco de dados.
|
|
|
- [Restaurant Repository](#restaurant-repository)
|
|
|
- [Tag Repository](#tag-repository)
|
|
|
- [User Preferences Repository](#user-preferences-repository)
|
|
|
- [User Repository](#user-repository)
|
|
|
|
|
|
- **`findOne(id: string)`**
|
|
|
Busca por um restaurante pelo seu id.
|
|
|
#### :page_facing_up: Restaurant Repository (`restaurant-repository.ts`)
|
|
|
|
|
|
- **`findAll()`**
|
|
|
Busca todos os restaurantes existentes.
|
|
|
Repositório responsável pelo gerenciamento dos dados dos restaurantes(criação, buscas, etc.).
|
|
|
|
|
|
- **`findByEmail(email: string)`**
|
|
|
Busca por um restaurante pelo seu email.
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
- **`findTagsByIds(tagIds: string[])`**
|
|
|
Busca por todos os restaurantes com as tags informadas pelos seu ids.
|
|
|
- **`create( profilePhoto, bannerPhoto, name, description, address, email, password, averagePrice, phone)`** Cria um novo restaurante e salva no banco de dados.
|
|
|
- **`findOne(id: string)`** Busca por um restaurante pelo seu id.
|
|
|
- **`findAll()`** Busca todos os restaurantes existentes.
|
|
|
- **`findByEmail(email: string)`** Busca por um restaurante pelo seu email.
|
|
|
- **`findTagsByIds(tagIds: string[])`** Busca por todos os restaurantes com as tags informadas pelos seu ids.
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 Tag Repository (`tag-repository.ts`)
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
#### :page_facing_up: Tag Repository (`tag-repository.ts`)
|
|
|
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
- **`findAll(type?: string)`**\
|
|
|
Retorna todas as tags. Se o parâmetro `type` for informado, filtra as tags pelo tipo correspondente.\
|
|
|
**Parâmetros:**
|
|
|
- `type` (opcional) – _string_ representando o tipo de tag para filtragem.
|
|
|
- **`findByType(type: TagType)`**\
|
|
|
Retorna as tags que correspondem ao tipo especificado.\
|
|
|
**Parâmetros:**
|
|
|
- `type` – _TagType_ (enum) que define o tipo da tag a ser retornada.
|
|
|
- **`findById(id: string)`**\
|
|
|
Busca uma tag pelo seu id.\
|
|
|
**Parâmetros:**
|
|
|
- `id` – _string_ que representa o identificador único da tag.
|
|
|
- **`getAllowedTagTypes()`**\
|
|
|
Retorna um array com todos os tipos permitidos de tags, conforme definidos no enum `TagType`.
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 User Preferences Repository (`user-preferences-repository.ts`)
|
|
|
Gerencia as preferências dos usuários.
|
|
|
#### :page_facing_up: User Preferences Repository (`user-preferences-repository.ts`)
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
- **`getUserPreferencesById(id: string)`**
|
|
|
Pega todas as preferências de um usuário.
|
|
|
Gerencia as preferências dos usuários.
|
|
|
|
|
|
---
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
#### 📄 User Repository (`user-repository.ts`)
|
|
|
Repositório responsável pelo gerenciamento dos dados dos usuários(criação, buscas, etc.).
|
|
|
- **`getUserPreferencesById(id: string)`**\
|
|
|
Pega todas as preferências de um usuário.
|
|
|
|
|
|
##### 🛠 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.
|
|
|
---
|
|
|
|
|
|
#### :page_facing_up: User Repository (`user-repository.ts`)
|
|
|
|
|
|
- **`findByEmail(email: string)`**
|
|
|
Busca um usuário pelo e-mail.
|
|
|
Repositório responsável pelo gerenciamento dos dados dos usuários(criação, buscas, etc.).
|
|
|
|
|
|
- **`findAll()`**
|
|
|
Busca todos os usuários existentes.
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
- **`findById(id: string)`**
|
|
|
Busca um usuário pelo seu Id.
|
|
|
- **`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
|
|
|
### :open_file_folder: 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)
|
|
|
Aqui estão as routes disponíveis e seus métodos:
|
|
|
|
|
|
#### 📄 Restaurant Route (`restaurant-route.ts`)
|
|
|
- [Restaurant Route](#restaurant-route)
|
|
|
- [Tag Route](#tag-route)
|
|
|
- [User Preferences Route](#user-preferences-route)
|
|
|
- [User Route](#user-route)
|
|
|
|
|
|
##### 🛤️ Rotas
|
|
|
- **`GET`** `/restaurants`
|
|
|
Retorna todos os restaurantes existentes.
|
|
|
#### :page_facing_up: Restaurant Route (`restaurant-route.ts`)
|
|
|
|
|
|
- **`POST`** `/restaurants`
|
|
|
Cria um novo restaurante.
|
|
|
##### :railway_track:️ Rotas
|
|
|
|
|
|
- **`GET`** `/restaurants/:id`
|
|
|
- **`GET`** `/restaurants`\
|
|
|
Retorna todos os restaurantes existentes.
|
|
|
- **`POST`** `/restaurants`\
|
|
|
Cria um novo restaurante.
|
|
|
- **`GET`** `/restaurants/:id`\
|
|
|
Retorna um restaurante com o id especificado.
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 Tag Route (`tag-route.ts`)
|
|
|
#### :page_facing_up: Tag Route (`tag-route.ts`)
|
|
|
|
|
|
##### :railway_track:️ Rotas
|
|
|
|
|
|
##### 🛤️ Rotas
|
|
|
- **GET `/tags/:type?`**\
|
|
|
Rota responsável por retornar as tags, utilizando o método `list` do `TagController`.\
|
|
|
**Detalhes:**
|
|
|
- Se o parâmetro `type` for fornecido, a rota repassa esse valor para o controlador filtrar as tags conforme o tipo informado.
|
|
|
- Se o parâmetro não for especificado, o controlador retorna todas as tags disponíveis.
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 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
|
|
|
#### :page_facing_up: User Preferences Route (`user-preferences-route.ts`)
|
|
|
|
|
|
##### :railway_track:️ 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.
|
|
|
#### :page_facing_up: User Route (`user-route.ts`)
|
|
|
|
|
|
##### :railway_track:️ Rotas
|
|
|
|
|
|
- **`POST`** `/users`\
|
|
|
Descrição: cria um novo usuário.
|
|
|
|
|
|
---
|
|
|
|
|
|
### 📂 Services
|
|
|
### :open_file_folder: 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)
|
|
|
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)
|
|
|
|
|
|
#### :page_facing_up: Restaurant Service (`restaurant-service.ts`)
|
|
|
|
|
|
#### 📄 Restaurant Service (`restaurant-service.ts`)
|
|
|
Contém métodos para gerenciar restaurantes
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
- **`createRestaurant(input: CreateRestaurantDto)`**
|
|
|
Cria um novo restaurante no sistema. O método realiza as seguintes etapas:
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
- **`createRestaurant(input: CreateRestaurantDto)`** Cria um novo restaurante no sistema. O método realiza as seguintes etapas:
|
|
|
1. Verifica se os campos name, address, email, password e tagsIds foram preenchidos
|
|
|
2. Se o e-mail já estiver em uso, lança um erro indicando que o e-mail já está sendo utilizado.
|
|
|
3. Se uma das tags não for encrontrada lança um erro indicando que uma das tags não foi encontrada
|
|
|
4. O novo restaurante é criado no banco de dados com as informações fornecidas.
|
|
|
- **`getRestaurants()`** Retorna todos os restaurantes com os campos: id, description, profilePhoto, bannerPhoto, name, address, averagePrice e phone.
|
|
|
- **`getRestaurantById(id: string)`** Retorna os campos: id, description, profilePhoto, bannerPhoto, name, address, averagePrice e phone de um restaurante com o id especificado.
|
|
|
|
|
|
- **`getRestaurants()`**
|
|
|
Retorna todos os restaurantes com os campos: id, description, profilePhoto, bannerPhoto, name, address, averagePrice e phone.
|
|
|
---
|
|
|
|
|
|
- **`getRestaurantById(id: string)`**
|
|
|
Retorna os campos: id, description, profilePhoto, bannerPhoto, name, address, averagePrice e phone de um restaurante com o id especificado.
|
|
|
#### :page_facing_up: Tag Service (`tag-service.ts`)
|
|
|
|
|
|
---
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
#### 📄 Tag Service (`tag-service.ts`)
|
|
|
- **`getTags(type?: string)`**\
|
|
|
Método assíncrono responsável por retornar as tags.\
|
|
|
**Parâmetros:**
|
|
|
- `type` (opcional) – _string_ que representa o tipo de tag desejado.
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
**Funcionamento:**
|
|
|
- **Com filtro:** Se o parâmetro `type` for informado, o método:
|
|
|
1. Converte o valor para letras maiúsculas (`formattedType`);
|
|
|
2. Obtém os tipos permitidos por meio de `TagRepository.getAllowedTagTypes()`;
|
|
|
3. Verifica se o `formattedType` está incluído nos tipos permitidos.
|
|
|
- Se não estiver, lança um erro informando `Invalid tag type: ${type}`;
|
|
|
- Caso esteja, retorna as tags filtradas utilizando `TagRepository.findByType(formattedType as TagType)`.
|
|
|
- **Sem filtro:** Se `type` não for informado, retorna todas as tags por meio de `TagRepository.findAll()`.
|
|
|
|
|
|
---
|
|
|
|
|
|
#### 📄 User Preferences Service (`user-preferences-service.ts`)
|
|
|
#### :page_facing_up: 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
|
|
|
##### :tools: Métodos
|
|
|
|
|
|
- **`createUser(profilePhoto: string, name: string, nickname: string, email: string, password: string, phone: string, gender: Gender, birthDate: Date)`**
|
|
|
- **`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.
|
|
|
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.
|
|
|
#### :page_facing_up: User Service (`user-service.ts`)
|
|
|
|
|
|
##### 🛠 Métodos
|
|
|
Contém métodos para gerenciar as preferências dos usuários.
|
|
|
|
|
|
- **`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`.
|
|
|
##### :tools: 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
|
|
|
### :open_file_folder: 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:**
|
|
|
:bulb: **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.
|
|
|
### :page_facing_up: 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.
|
|
|
|
|
|
--- |
|
|
\ No newline at end of file |