from __future__ import annotations import datetime from typing import ClassVar, List, Optional from pydantic import Field from common import ApiModel from ingredients import Ingredient from persons.models import Person from recipes import Recipe class MealRecipe(ApiModel): meal_id: int recipe_id: int servings: float recipe: Optional[Recipe] = None class Meal(ApiModel): KEYS: ClassVar[List[str]] = ["id", "suggested_date", "consumed_date", "purchase_date"] id: int = -1 suggested_date: datetime.datetime consumed_date: Optional[datetime.datetime] = None chefs: List[Person] = Field(default_factory=list) cleanup: List[Person] = Field(default_factory=list) consumers: List[Person] = Field(default_factory=list) recipes: List[MealRecipe] = Field(default_factory=list) extra_ingredients: List[Ingredient] = Field(default_factory=list) # Set from shopping list purchase_date: Optional[datetime.datetime] = None