Skip to content

Registros de Comidas

Endpoints para registrar y seguir comidas.

Los siguientes modelos de Prisma pertenecen al schema nutrition:

model MealLog {
id String @id @default(cuid())
userProfileId String @map("user_profile_id")
logDate DateTime @map("log_date")
mealType MealType @map("meal_type")
notes String?
moodBefore Int? @map("mood_before")
moodAfter Int? @map("mood_after")
hungerLevel Int? @map("hunger_level")
photoUrl String? @map("photo_url")
userProfile UserProfile @relation(fields: [userProfileId], references: [id], onDelete: Cascade)
foodEntries FoodEntry[]
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@index([userProfileId, logDate])
@@map("meal_logs")
@@schema("nutrition")
}
model FoodEntry {
id String @id @default(cuid())
mealLogId String @map("meal_log_id")
foodId String @map("food_id")
quantity Float
unit String @default("g")
calories Float
protein Float
carbs Float
fat Float
mealLog MealLog @relation(fields: [mealLogId], references: [id], onDelete: Cascade)
food Food @relation(fields: [foodId], references: [id], onDelete: Cascade)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("food_entries")
@@schema("nutrition")
}
enum MealType {
BREAKFAST
LUNCH
DINNER
SNACK
PRE_WORKOUT
POST_WORKOUT
@@schema("nutrition")
}

Obtener registros de comidas.

  • URL: /api/v1/nutrition/meal-logs
  • Método: GET
  • Autenticación Requerida:

Este endpoint obtiene registros de comidas:

  1. Filtros disponibles:

    • userProfileId: Filtrar por usuario
    • mealType: Tipo de comida
    • startDate/endDate: Rango de fechas
  2. Incluye:

    • foodEntries con información del alimento
    • userProfile (id, name)
  • date: Filtrar por fecha
  • mealType: Filtrar por tipo de comida
  • page: Número de página
  • limit: Resultados por página
import { hcWithType } from '@vitality-gym/api/client'
const client = hcWithType('http://localhost:3000')
const res = await client.api.v1.nutrition['meal-logs'].$get({
query: {
date: '2023-10-27'
}
})

Obtener registros de comidas del usuario actual.

  • URL: /api/v1/nutrition/meal-logs/me
  • Método: GET
  • Autenticación Requerida:

Obtener un registro de comida específico con entradas de alimentos.

  • URL: /api/v1/nutrition/meal-logs/:id
  • Método: GET
  • Autenticación Requerida:

Registrar una comida.

  • URL: /api/v1/nutrition/meal-logs
  • Método: POST
  • Autenticación Requerida:

Este endpoint registra una comida:

  1. Crea el MealLog con:

    • userProfileId del usuario autenticado
    • mealType, logDate
    • notes opcionales
  2. Las entradas de alimentos se añaden después con el endpoint de food entries

{
"mealType": "BREAKFAST",
"logDate": "2023-10-27T08:00:00Z",
"notes": "Morning breakfast"
}

Actualizar un registro de comida existente.

  • URL: /api/v1/nutrition/meal-logs/:id
  • Método: PUT
  • Autenticación Requerida:

Eliminar un registro de comida.

  • URL: /api/v1/nutrition/meal-logs/:id
  • Método: DELETE
  • Autenticación Requerida:

Añadir una entrada de alimento a un registro de comida.

  • URL: /api/v1/nutrition/meal-logs/:mealLogId/entries
  • Método: POST
  • Autenticación Requerida:

Este endpoint añade un alimento a una comida:

  1. Verifica que el meal log y alimento existen

  2. Calcula valores nutricionales:

    • Multiplica valores del alimento por (cantidad/100)
    • Calcula: calories, protein, carbs, fat
  3. Crea FoodEntry con valores calculados

{
"foodId": "food_id",
"quantity": 150,
"unit": "g"
}
{
"data": {
"id": "...",
"quantity": 150,
"calories": 247.5,
"protein": 46.5,
"carbs": 0,
"fat": 5.4,
"food": {...}
}
}

Actualizar una entrada de alimento en un registro de comida.

  • URL: /api/v1/nutrition/meal-logs/:mealLogId/entries/:entryId
  • Método: PUT
  • Autenticación Requerida:

Eliminar una entrada de alimento de un registro de comida.

  • URL: /api/v1/nutrition/meal-logs/:mealLogId/entries/:entryId
  • Método: DELETE
  • Autenticación Requerida:

Obtener resumen nutricional para un día específico.

  • URL: /api/v1/nutrition/meal-logs/daily
  • Método: GET
  • Autenticación Requerida:
  • date: Fecha a resumir (YYYY-MM-DD)
{
"data": {
"meals": [...],
"totals": {
"calories": 2150,
"protein": 120,
"carbs": 250,
"fat": 70
}
}
}