Skip to content

Objetivos Nutricionales

Endpoints para gestionar objetivos nutricionales y ver estadísticas.

El siguiente modelo de Prisma pertenece al schema nutrition:

model NutritionGoal {
id String @id @default(cuid())
userProfileId String @map("user_profile_id")
dailyCalories Int? @map("daily_calories")
dailyProtein Float? @map("daily_protein")
dailyCarbs Float? @map("daily_carbs")
dailyFat Float? @map("daily_fat")
dailyFiber Float? @map("daily_fiber")
dailyWater Float? @map("daily_water")
isActive Boolean @default(true) @map("is_active")
autoCalculated Boolean @default(false) @map("auto_calculated")
notes String?
lastUpdatedBy String? @map("last_updated_by")
userProfile UserProfile @relation(fields: [userProfileId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@unique([userProfileId])
@@map("nutrition_goals")
@@schema("nutrition")
}

Obtener el objetivo nutricional del usuario.

  • URL: /api/v1/nutrition/goals
  • Método: GET
  • Autenticación Requerida:

Obtiene el objetivo nutricional del usuario. Lanza 404 si no existe.

{
"data": {
"id": "...",
"dailyCalories": 2000,
"dailyProtein": 100,
"dailyCarbs": 250,
"dailyFat": 65,
"dailyWater": 2000,
"isActive": true
}
}

Crear o actualizar el objetivo nutricional del usuario.

  • URL: /api/v1/nutrition/goals
  • Método: POST
  • Autenticación Requerida:

Crea o actualiza el objetivo nutricional:

  1. Verifica si existe objetivo para el usuario
  2. Si existe: Actualiza con los nuevos valores
  3. Si no existe: Crea nuevo objetivo
{
"dailyCalories": 2000,
"dailyProtein": 100,
"dailyCarbs": 250,
"dailyFat": 65,
"dailyWater": 2000
}

Obtener estadísticas nutricionales para el usuario.

  • URL: /api/v1/nutrition/stats
  • Método: GET
  • Autenticación Requerida:

Este endpoint calcula estadísticas nutricionales:

  1. Obtiene meal logs en el rango de fechas

  2. Suma totales de todas las food entries:

    • Calorías, proteínas, carbohidratos, grasas
  3. Calcula promedios por número de meal logs

  4. Obtiene objetivo nutricional si existe

  5. Suma consumo de agua en el período

  6. Retorna:

    • Totales y promedios
    • Objetivos (si configurados)
    • Conteo de comidas
  • startDate: Fecha de inicio
  • endDate: Fecha de fin
{
"data": {
"period": { "startDate": "...", "endDate": "..." },
"totals": {
"calories": 15000,
"protein": 750,
"carbs": 1500,
"fat": 500,
"water": 14000
},
"averages": {
"calories": 2142,
"protein": 107
},
"goals": {
"dailyCalories": 2000,
"dailyProtein": 100
},
"mealCount": 7
}
}

Obtener resumen nutricional para la semana actual.

  • URL: /api/v1/nutrition/stats/weekly
  • Método: GET
  • Autenticación Requerida:

Obtener resumen nutricional para el mes actual.

  • URL: /api/v1/nutrition/stats/monthly
  • Método: GET
  • Autenticación Requerida: