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

1from datetime import datetime 

2 

3from pydantic import UUID4, ConfigDict 

4from sqlalchemy.orm import joinedload 

5from sqlalchemy.orm.interfaces import LoaderOption 

6 

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 

12 

13 

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) 

20 

21 

22class RecipeCommentCreate(MealieModel): 

23 recipe_id: UUID4 

24 text: str 

25 

26 

27class RecipeCommentSave(RecipeCommentCreate): 

28 user_id: UUID4 

29 

30 

31class RecipeCommentUpdate(MealieModel): 

32 id: UUID4 

33 text: str 

34 

35 

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) 

44 

45 @classmethod 

46 def loader_options(cls) -> list[LoaderOption]: 

47 return [ 

48 joinedload(RecipeComment.user), 

49 joinedload(RecipeComment.recipe).joinedload(RecipeModel.user), 

50 ] 

51 

52 

53class RecipeCommentPagination(PaginationBase): 

54 items: list[RecipeCommentOut]