-
Notifications
You must be signed in to change notification settings - Fork 0
Description
🚀 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 deFoodItem. - Relacionamento:
@ManyToManycomFoodItem. - Associação com
User.
- Campos:
-
Criar
MealDto- Estrutura semelhante ao
FoodDto. - Deve conter IDs ou DTOs simplificados dos ingredientes.
- Referência:
FoodDto.java
- Estrutura semelhante ao
-
Criar
MealMapper- Responsável por converter entre
MealeMealDto.
- Responsável por converter entre
2. Camada de Persistência e Serviço
-
Criar
MealRepository- Interface:
JpaRepository<Meal, Long>
- Interface:
-
Criar
MealService- Métodos:
createMeal,getMealById,getAllMeals,updateMeal,deleteMeal - Contém a lógica de negócio (validações, erros).
- Referência:
FoodItemService.java
- Métodos:
3. Implementação do Controller e Endpoints
-
Criar
MealController- Endpoints RESTful:
POST /api/meals— Cria nova refeição- Requisição:
MealDto - Resposta 201:
MealDto
- Requisição:
GET /api/meals— Lista refeições do usuário- Resposta 200:
List<MealDto>
- Resposta 200:
GET /api/meals/{id}— Busca por ID- Sucesso 200:
MealDto - Erro 404: Não encontrada
- Sucesso 200:
PUT /api/meals/{id}— Atualiza refeição- Requisição:
MealDto - Sucesso 200:
MealDto - Erro 404: Não encontrada
- Requisição:
DELETE /api/meals/{id}— Remove refeição- Sucesso 204: Sem conteúdo
- Erro 404: Não encontrada
- Endpoints RESTful:
-
Validação
- Usar
@Validnos DTOs paraPOSTePUT.
- Usar
-
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).