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

Last edited by Guilherme Melos Vieira Apr 03, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Codigo

Home Escopo e Cronograma Processo Design/Mockups Configuração Arquitetura Infra Código BD

A divisão da documentação vai ser feita como é feito no projeto: Backend e Frontend

  • BACKEND
  • Estrutura de Pastas
  • Estrutura do Projeto
    • 📂 Controllers
      • 📄 Restaurant Controller (restaurant-controller.ts)
        • 🛠 Métodos
      • 📄 Tag Controller (tag-controller.ts)
        • 🛠 Métodos
      • 📄 User Preferences Controller (user-preferences-controller.ts)
        • 🛠 Métodos
      • 📄 User Controller (user-controller.ts)
        • 🛠 Métodos
    • 📂 Repositories
      • 📄 Restaurant Repository (restaurant-repository.ts)
        • 🛠 Métodos
  • ...
    • 📄 Tag Repository (tag-repository.ts)
      • 🛠 Métodos
    • 📄 User Preferences Repository (user-preferences-repository.ts)
      • 🛠 Métodos
    • 📄 User Repository (user-repository.ts)
      • 🛠 Métodos
    • 📂 Routes
      • 📄 Restaurant Route (restaurant-route.ts)
        • 🛤️ Rotas
  • ...
    • 📄 Tag Route (tag-route.ts)
      • 🛤️ Rotas
    • 📄 User Preferences Route (user-preferences-route.ts)
      • 🛤️ Rotas
    • 📄 User Route (user-route.ts)
      • 🛤️ Rotas
    • 📂 Services
      • 📄 Restaurant Service (restaurant-service.ts)
        • 🛠 Métodos
  • ...
    • 📄 Tag Service (tag-service.ts)
      • 🛠 Métodos
    • 📄 User Preferences Service (user-preferences-service.ts)
      • 🛠 Métodos
    • 📄 User Service (user-service.ts)
      • 🛠 Métodos
    • 📂 Utils
    • 📄 Index.ts

BACKEND

Estrutura de Pastas

  • 📂 bite-alegre-backend
    • 📂 .husky
    • 📂 node_modules
    • 📂 prisma
    • 📂 src
      • 📂 controllers
      • 📂 repositories
      • 📂 routes
      • 📂 services
      • 📂 utils
      • 📄 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
  • Tag Controller
  • User Preferences 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:

    {
      "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.
    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
  • Tag Repository
  • User Preferences 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
  • Tag Route
  • User Preferences 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
  • Tag Service
  • User Preferences 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