using Fitness_core_BE.Models; using Fitness_core_BE.DTOs.Meal; namespace Fitness_core_BE.Interfaces { public interface IMealRepository { // Meal Category operations Task> GetMealCategoryListAsync(CancellationToken ct = default); Task MealCategoryExistsAsync(Guid mealCategoryId, CancellationToken ct = default); Task CreateMealCategoryAsync(MealCategory mealCategory, CancellationToken ct = default); // Meal Plan operations Task> GetMealPlanListAsync(string userType, Guid clientId, CancellationToken ct = default); Task GetMealPlanByIdAsync(Guid id, CancellationToken ct = default); Task> GetMealPlansByCustomerIdAsync(Guid customerId, CancellationToken ct = default); Task GetMealPlanEntityByIdAsync(Guid id, CancellationToken ct = default); Task CreateMealPlanAsync(MealPlan mealPlan, CancellationToken ct = default); Task UpdateMealPlanAsync(MealPlan mealPlan, CancellationToken ct = default); Task DeleteMealPlanAsync(Guid id, CancellationToken ct = default); // Meal Item operations Task> GetMealsByMealPlanIdAsync(Guid mealPlanId, CancellationToken ct = default); Task GetMealByIdAsync(Guid id, CancellationToken ct = default); Task CreateMealAsync(Meal mealItem, CancellationToken ct = default); Task UpdateMealAsync(Meal mealItem, CancellationToken ct = default); Task DeleteMealAsync(Guid id, CancellationToken ct = default); Task AssignMealToCustomerAsync(CustomerMeal customerMeal, CancellationToken ct = default); Task UnassignMealFromCustomerAsync(Guid customerMealId, CancellationToken ct = default); Task> GetCustomerMealsByPlanIdAsync(Guid mealPlanId, CancellationToken ct = default); Task> GetCustomerMealsByCustomerIdAsync(Guid customerId, CancellationToken ct = default); } }