From 3d4a29a2bd47c67287f33d9ff17b723c8047cc02 Mon Sep 17 00:00:00 2001 From: hay-kot Date: Tue, 27 Apr 2021 22:13:40 -0800 Subject: [PATCH] asset start --- mealie/db/models/recipe/assets.py | 20 ++++++++++++ mealie/db/models/recipe/recipe.py | 54 +++---------------------------- mealie/schema/recipe.py | 5 ++- 3 files changed, 29 insertions(+), 50 deletions(-) create mode 100644 mealie/db/models/recipe/assets.py diff --git a/mealie/db/models/recipe/assets.py b/mealie/db/models/recipe/assets.py new file mode 100644 index 000000000..d1bbc7fbd --- /dev/null +++ b/mealie/db/models/recipe/assets.py @@ -0,0 +1,20 @@ +import sqlalchemy as sa +from mealie.db.models.model_base import SqlAlchemyBase + + +class RecipeAsset(SqlAlchemyBase): + __tablename__ = "recipe_assets" + id = sa.Column(sa.Integer, primary_key=True) + parent_id = sa.Column(sa.String, sa.ForeignKey("recipes.id")) + name = sa.Column(sa.String) + icon = sa.Column(sa.String) + + + def __init__( + self, + name=None, + icon=None, + ) -> None: + self.name = name + self.icon = icon + diff --git a/mealie/db/models/recipe/recipe.py b/mealie/db/models/recipe/recipe.py index 687b51c01..686c84bc4 100644 --- a/mealie/db/models/recipe/recipe.py +++ b/mealie/db/models/recipe/recipe.py @@ -6,6 +6,7 @@ import sqlalchemy as sa import sqlalchemy.orm as orm from mealie.db.models.model_base import BaseMixins, SqlAlchemyBase from mealie.db.models.recipe.api_extras import ApiExtras +from mealie.db.models.recipe.assets import RecipeAsset from mealie.db.models.recipe.category import Category, recipes2categories from mealie.db.models.recipe.ingredient import RecipeIngredient from mealie.db.models.recipe.instruction import RecipeInstruction @@ -86,6 +87,7 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): rating: int = None, orgURL: str = None, extras: dict = None, + assets: list = None, *args, **kwargs ) -> None: @@ -99,6 +101,7 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): self.recipeYield = recipeYield self.recipeIngredient = [RecipeIngredient(ingredient=ingr) for ingr in recipeIngredient] + self.assets = [RecipeAsset(name=a.get("name"), icon=a.get("icon")) for a in assets] self.recipeInstructions = [ RecipeInstruction(text=instruc.get("text"), title=instruc.get("title"), type=instruc.get("@type", None)) for instruc in recipeInstructions @@ -118,54 +121,7 @@ class RecipeModel(SqlAlchemyBase, BaseMixins): self.orgURL = orgURL self.extras = [ApiExtras(key=key, value=value) for key, value in extras.items()] - def update( - self, - session, - name: str = None, - description: str = None, - image: str = None, - recipeYield: str = None, - recipeIngredient: List[str] = None, - recipeInstructions: List[dict] = None, - recipeCuisine: str = None, - totalTime: str = None, - tools: list[str] = [], - prepTime: str = None, - performTime: str = None, - nutrition: dict = None, - slug: str = None, - recipeCategory: List[str] = None, - tags: List[str] = None, - dateAdded: datetime.date = None, - notes: List[dict] = None, - rating: int = None, - orgURL: str = None, - extras: dict = None, - *args, - **kwargs - ): + def update(self, *args, **kwargs): """Updated a database entry by removing nested rows and rebuilds the row through the __init__ functions""" - self.__init__( - session=session, - name=name, - description=description, - image=image, - recipeYield=recipeYield, - recipeIngredient=recipeIngredient, - recipeInstructions=recipeInstructions, - totalTime=totalTime, - recipeCuisine=recipeCuisine, - prepTime=prepTime, - performTime=performTime, - nutrition=nutrition, - tools=tools, - slug=slug, - recipeCategory=recipeCategory, - tags=tags, - dateAdded=dateAdded, - notes=notes, - rating=rating, - orgURL=orgURL, - extras=extras, - ) + self.__init__(*args, **kwargs) diff --git a/mealie/schema/recipe.py b/mealie/schema/recipe.py index 97db5e09f..e0c582d97 100644 --- a/mealie/schema/recipe.py +++ b/mealie/schema/recipe.py @@ -25,7 +25,9 @@ class RecipeStep(BaseModel): class RecipeAsset(BaseModel): name: str icon: str - path: str + + class Config: + orm_mode = True class Nutrition(BaseModel): @@ -76,6 +78,7 @@ class Recipe(RecipeSummary): performTime: Optional[str] = None # Mealie Specific + assets: Optional[list[RecipeAsset]] = [] dateAdded: Optional[datetime.date] notes: Optional[List[RecipeNote]] = [] orgURL: Optional[str]