using Health.Domain.Entities; using Health.Domain.Enums; namespace Health.Application.Diets; public sealed record DietFoodItemInput( string Name, string? Portion, int? Calories, int SortOrder); public sealed record DietRecordCreateRequest( MealType MealType, int? TotalCalories, int? HealthScore, DateOnly RecordedAt, IReadOnlyList FoodItems); public sealed record DietRecordPatchRequest( int? TotalCalories, int? HealthScore); public sealed record DietFoodItemDto( string Name, string? Portion, int? Calories); public sealed record DietRecordDto( Guid Id, string MealType, int? TotalCalories, int? HealthScore, DateOnly RecordedAt, IReadOnlyList FoodItems); public interface IDietService { Task> ListAsync(Guid userId, string? date, string? mealType, CancellationToken ct); Task CreateAsync(Guid userId, DietRecordCreateRequest request, CancellationToken ct); Task DeleteAsync(Guid userId, Guid recordId, CancellationToken ct); Task UpdateAsync(Guid userId, Guid recordId, DietRecordPatchRequest request, CancellationToken ct); } public interface IDietRepository { Task> ListAsync(Guid userId, DateOnly? recordedAt, MealType? mealType, CancellationToken ct); Task GetOwnedAsync(Guid userId, Guid recordId, CancellationToken ct); Task AddAsync(DietRecord record, CancellationToken ct); void Delete(DietRecord record); Task SaveChangesAsync(CancellationToken ct); }