Coverage for opt/mealie/lib/python3.12/site-packages/mealie/schema/recipe/recipe_comments.py: 100%
36 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from datetime import datetime
3from pydantic import UUID4, ConfigDict
4from sqlalchemy.orm import joinedload
5from sqlalchemy.orm.interfaces import LoaderOption
7from mealie.db.models.recipe import RecipeComment
8from mealie.db.models.recipe.recipe import RecipeModel
9from mealie.schema._mealie import MealieModel
10from mealie.schema._mealie.mealie_model import UpdatedAtField
11from mealie.schema.response.pagination import PaginationBase
14class UserBase(MealieModel):
15 id: UUID4
16 username: str | None = None
17 admin: bool
18 full_name: str | None = None
19 model_config = ConfigDict(from_attributes=True)
22class RecipeCommentCreate(MealieModel):
23 recipe_id: UUID4
24 text: str
27class RecipeCommentSave(RecipeCommentCreate):
28 user_id: UUID4
31class RecipeCommentUpdate(MealieModel):
32 id: UUID4
33 text: str
36class RecipeCommentOut(RecipeCommentCreate):
37 id: UUID4
38 recipe_id: UUID4
39 created_at: datetime
40 updated_at: datetime = UpdatedAtField(...)
41 user_id: UUID4
42 user: UserBase
43 model_config = ConfigDict(from_attributes=True)
45 @classmethod
46 def loader_options(cls) -> list[LoaderOption]:
47 return [
48 joinedload(RecipeComment.user),
49 joinedload(RecipeComment.recipe).joinedload(RecipeModel.user),
50 ]
53class RecipeCommentPagination(PaginationBase):
54 items: list[RecipeCommentOut]