mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-28 13:05:26 -05:00
fix: all recipes performance regressions (#2062)
* Move recipe validations from RecipeSummary to Recipe * fix RepositoryRecipes loading recipes with ingredients even when load_food is False * Add eager loading of ingredient units * fix trying to instantiate PaginationBase with concrete type not being valid for mypy * fix linting issue
This commit is contained in:
@@ -91,8 +91,6 @@ class RecipeSummary(MealieModel):
|
||||
rating: int | None
|
||||
org_url: str | None = Field(None, alias="orgURL")
|
||||
|
||||
recipe_ingredient: list[RecipeIngredient] | None = []
|
||||
|
||||
date_added: datetime.date | None
|
||||
date_updated: datetime.datetime | None
|
||||
|
||||
@@ -103,29 +101,9 @@ class RecipeSummary(MealieModel):
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
@validator("tags", always=True, pre=True, allow_reuse=True)
|
||||
def validate_tags(cats: list[Any]): # type: ignore
|
||||
if isinstance(cats, list) and cats and isinstance(cats[0], str):
|
||||
return [RecipeTag(id=uuid4(), name=c, slug=slugify(c)) for c in cats]
|
||||
return cats
|
||||
|
||||
@validator("recipe_category", always=True, pre=True, allow_reuse=True)
|
||||
def validate_categories(cats: list[Any]): # type: ignore
|
||||
if isinstance(cats, list) and cats and isinstance(cats[0], str):
|
||||
return [RecipeCategory(id=uuid4(), name=c, slug=slugify(c)) for c in cats]
|
||||
return cats
|
||||
|
||||
@validator("group_id", always=True, pre=True, allow_reuse=True)
|
||||
def validate_group_id(group_id: Any):
|
||||
if isinstance(group_id, int):
|
||||
return uuid4()
|
||||
return group_id
|
||||
|
||||
@validator("user_id", always=True, pre=True, allow_reuse=True)
|
||||
def validate_user_id(user_id: Any):
|
||||
if isinstance(user_id, int):
|
||||
return uuid4()
|
||||
return user_id
|
||||
class RecipeSummaryWithIngredients(RecipeSummary):
|
||||
recipe_ingredient: list[RecipeIngredient] | None = []
|
||||
|
||||
|
||||
class RecipePaginationQuery(PaginationQuery):
|
||||
@@ -205,8 +183,33 @@ class Recipe(RecipeSummary):
|
||||
|
||||
return recipe_ingredient
|
||||
|
||||
@validator("tags", always=True, pre=True, allow_reuse=True)
|
||||
def validate_tags(cats: list[Any]): # type: ignore
|
||||
if isinstance(cats, list) and cats and isinstance(cats[0], str):
|
||||
return [RecipeTag(id=uuid4(), name=c, slug=slugify(c)) for c in cats]
|
||||
return cats
|
||||
|
||||
@validator("recipe_category", always=True, pre=True, allow_reuse=True)
|
||||
def validate_categories(cats: list[Any]): # type: ignore
|
||||
if isinstance(cats, list) and cats and isinstance(cats[0], str):
|
||||
return [RecipeCategory(id=uuid4(), name=c, slug=slugify(c)) for c in cats]
|
||||
return cats
|
||||
|
||||
@validator("group_id", always=True, pre=True, allow_reuse=True)
|
||||
def validate_group_id(group_id: Any):
|
||||
if isinstance(group_id, int):
|
||||
return uuid4()
|
||||
return group_id
|
||||
|
||||
@validator("user_id", always=True, pre=True, allow_reuse=True)
|
||||
def validate_user_id(user_id: Any):
|
||||
if isinstance(user_id, int):
|
||||
return uuid4()
|
||||
return user_id
|
||||
|
||||
|
||||
from mealie.schema.recipe.recipe_ingredient import RecipeIngredient # noqa: E402
|
||||
|
||||
RecipeSummary.update_forward_refs()
|
||||
RecipeSummaryWithIngredients.update_forward_refs()
|
||||
Recipe.update_forward_refs()
|
||||
|
||||
Reference in New Issue
Block a user