Skip to content

Feature: Implementar Endpoints CRUD para Gerenciamento de Refeições (Meals) #5

@OtavioXimarelli

Description

@OtavioXimarelli

🚀 Feature: Implementar Endpoints CRUD para Gerenciamento de Refeições (Meals)

Labels: feature backend database


📌 Contexto

Atualmente, a aplicação permite o gerenciamento de FoodItems (ingredientes) e a geração de Recipes (receitas) pela IA. Para que os usuários possam registrar e acompanhar as refeições que de fato consomem (seja a partir de uma receita gerada ou não), é necessário criar uma entidade Meal e os respectivos endpoints para seu gerenciamento completo (CRUD).

Esta funcionalidade é a base para futuras features, como o tracking de calorias e o histórico alimentar do usuário.


🎯 Descrição da Tarefa

Implementar a camada completa (entidade, repositório, serviço, DTO e controller) para as operações CRUD da entidade Meal. A API deve seguir os padrões RESTful já estabelecidos no projeto.


📋 Requisitos e Tarefas a Serem Executadas

1. Definição da Entidade e DTO

  • Criar a Entidade Meal

    • Campos: id, name, description, mealTime (data e hora), lista de FoodItem.
    • Relacionamento: @ManyToMany com FoodItem.
    • Associação com User.
  • Criar MealDto

    • Estrutura semelhante ao FoodDto.
    • Deve conter IDs ou DTOs simplificados dos ingredientes.
    • Referência: FoodDto.java
  • Criar MealMapper

    • Responsável por converter entre Meal e MealDto.

2. Camada de Persistência e Serviço

  • Criar MealRepository

    • Interface: JpaRepository<Meal, Long>
  • Criar MealService

    • Métodos: createMeal, getMealById, getAllMeals, updateMeal, deleteMeal
    • Contém a lógica de negócio (validações, erros).
    • Referência: FoodItemService.java

3. Implementação do Controller e Endpoints

  • Criar MealController

    • Endpoints RESTful:
      • POST /api/meals — Cria nova refeição
        • Requisição: MealDto
        • Resposta 201: MealDto
      • GET /api/meals — Lista refeições do usuário
        • Resposta 200: List<MealDto>
      • GET /api/meals/{id} — Busca por ID
        • Sucesso 200: MealDto
        • Erro 404: Não encontrada
      • PUT /api/meals/{id} — Atualiza refeição
        • Requisição: MealDto
        • Sucesso 200: MealDto
        • Erro 404: Não encontrada
      • DELETE /api/meals/{id} — Remove refeição
        • Sucesso 204: Sem conteúdo
        • Erro 404: Não encontrada
  • Validação

    • Usar @Valid nos DTOs para POST e PUT.
  • Segurança

    • Todos os endpoints devem exigir autenticação.

✅ Critérios de Aceitação

  • Todos os 5 endpoints CRUD funcionais e testados.
  • API retorna os códigos HTTP apropriados: 200, 201, 204, 400, 404.
  • Camada de serviço deve conter a lógica; controller deve apenas rotear.
  • Seguir padrão de código do projeto (estrutura de pacotes, nomes de classes).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions