diet - v1.0.0
    Preparing search index...

    Clase de persistencia en MongoDB para la entidad Dieta.

    Esta clase encapsula todas las operaciones necesarias para manipular datos del modelo Dieta utilizando Mongoose como ODM. Permite guardar, actualizar, obtener y eliminar dietas, así como también gestionar el contenido del menú semanal dentro de cada dieta.

    La estructura de Dieta incluye:

    • nombre: string
    • fechaInicio / fechaFin: Date
    • caloriasTotales: number (opcional)
    • menuSemanal: array de días, donde cada día tiene un nombre y una lista de comidas
    const repo = new DietaMongo();
    const nueva = await repo.guardar({ nombre: 'Keto', fechaInicio: new Date() });
    await repo.agregarDia(nueva._id, { dia: 'Lunes', comidas: [] });

    Hierarchy (View Summary)

    Index

    Constructors

    Methods

    • Actualiza una dieta existente con nuevos campos.

      Puede usarse para modificar nombre, fechas o incluso reemplazar todo menuSemanal. No elimina campos que no se pasen, solo sobrescribe los incluidos en nuevosDatos.

      Parameters

      • id: string

        ID del documento a actualizar.

      • nuevosDatos: any

        Campos a actualizar.

      Returns Promise<any>

      Documento actualizado o null si no se encontró.

    • Agrega una nueva comida al array comidas de un día específico en el menuSemanal.

      Utiliza $push combinado con un filter sobre el día. Requiere que ese día ya exista. Si no existe, no hará cambios.

      Parameters

      • id: string

        ID de la dieta.

      • dia: string

        Día del menú donde se desea agregar la comida.

      • comida: { calorias: number; nombre: string; tipo: string }

        Objeto comida.

      Returns Promise<any>

      Resultado del updateOne (acknowledged, matchedCount, modifiedCount).

      await repo.agregarComidaADia("665fabc...", "Lunes", { nombre: "Té verde", calorias: 5, tipo: "desayuno" });
      
    • Agrega un nuevo día (objeto MenuDiario) al campo menuSemanal de una dieta.

      Este método permite construir el menú semanal progresivamente. Si ya existe un día con el mismo nombre, se duplicará (no lo reemplaza).

      Parameters

      • id: string

        ID del documento Dieta.

      • diaData: { comidas?: any[]; dia: string }

        Objeto con el nombre del día y lista de comidas.

      Returns Promise<any>

      Dieta actualizada (con el nuevo día agregado).

      await repo.agregarDia("665fabc...", { dia: "Miércoles", comidas: [] });
      
    • Elimina una dieta completa de la base de datos.

      Parameters

      • id: string

        ID del documento a eliminar.

      Returns Promise<any>

      Documento eliminado o null si no existía.

    • Elimina una comida específica de un día del menuSemanal, basada en el nombre exacto.

      Si existen varias comidas con el mismo nombre en ese día, las elimina todas. Si querés eliminar solo una instancia, habría que usar _id en las comidas (requiere schema con _id: true).

      Parameters

      • id: string

        ID de la dieta.

      • dia: string

        Día del menú donde está la comida a eliminar.

      • nombreComida: string

        Nombre exacto de la comida a eliminar.

      Returns Promise<any>

      Resultado del updateOne.

      await repo.eliminarComidaDeDia("665fabc...", "Lunes", "Tostadas integrales");
      
    • Guarda una nueva dieta en la base de datos MongoDB.

      Puede incluir solo nombre y fechaInicio, o una dieta completa con menuSemanal. Si se omite el menú, puede agregarse luego mediante agregarDia o actualizar.

      Parameters

      • dieta: any

        Objeto de dieta a guardar (debe cumplir con el schema de Mongoose).

      Returns Promise<any>

      Documento persistido en MongoDB (incluye _id).

    • Busca una dieta por su ID de MongoDB.

      Parameters

      • id: string

        ID del documento (formato Mongo ObjectId).

      Returns Promise<any>

      Documento encontrado o null si no existe.

    • Obtiene todas las dietas creadas por un usuario específico. Esto se usa para mostrar las dietas personales del usuario logueado.

      Parameters

      • userId: string

        ID del usuario.

      Returns Promise<any[]>

      Lista de dietas del usuario.