Coverage for opt/mealie/lib/python3.12/site-packages/mealie/schema/recipe/recipe_category.py: 100%
38 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:32 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:32 +0000
1from pydantic import UUID4, ConfigDict 1a
2from sqlalchemy.orm import selectinload 1a
3from sqlalchemy.orm.interfaces import LoaderOption 1a
5from mealie.db.models.recipe import RecipeModel, Tag 1a
6from mealie.schema._mealie import MealieModel 1a
9class CategoryIn(MealieModel): 1a
10 name: str 1a
13class CategorySave(CategoryIn): 1a
14 group_id: UUID4 1a
17class CategoryBase(CategoryIn): 1a
18 id: UUID4 1a
19 group_id: UUID4 | None = None 1a
20 slug: str 1a
21 model_config = ConfigDict(from_attributes=True) 1a
24class CategoryOut(CategoryBase): 1a
25 slug: str 1a
26 group_id: UUID4 1a
27 model_config = ConfigDict(from_attributes=True) 1a
30class RecipeCategoryResponse(CategoryBase): 1a
31 recipes: "list[RecipeSummary]" = [] 1a
32 model_config = ConfigDict(from_attributes=True) 1a
35class TagIn(CategoryIn): 1a
36 pass 1a
39class TagSave(TagIn): 1a
40 group_id: UUID4 1a
43class TagBase(CategoryBase): 1a
44 pass 1a
47class TagOut(TagSave): 1a
48 id: UUID4 1a
49 slug: str 1a
50 model_config = ConfigDict(from_attributes=True) 1a
53class RecipeTagResponse(RecipeCategoryResponse): 1a
54 @classmethod 1a
55 def loader_options(cls) -> list[LoaderOption]: 1a
56 return [ 1b
57 selectinload(Tag.recipes).joinedload(RecipeModel.recipe_category),
58 selectinload(Tag.recipes).joinedload(RecipeModel.tags),
59 selectinload(Tag.recipes).joinedload(RecipeModel.tools),
60 ]
63from mealie.schema.recipe.recipe import RecipeSummary # noqa: E402 1a
65RecipeCategoryResponse.model_rebuild() 1a
66RecipeTagResponse.model_rebuild() 1a