Coverage for opt/mealie/lib/python3.12/site-packages/mealie/schema/reports/reports.py: 100%

42 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-25 15:32 +0000

1import datetime 1a

2import enum 1a

3 

4from pydantic import ConfigDict, Field 1a

5from pydantic.types import UUID4 1a

6from sqlalchemy.orm import joinedload 1a

7from sqlalchemy.orm.interfaces import LoaderOption 1a

8 

9from mealie.db.models._model_utils.datetime import get_utc_now 1a

10from mealie.db.models.group import ReportModel 1a

11from mealie.schema._mealie import MealieModel 1a

12 

13 

14class ReportCategory(str, enum.Enum): 1a

15 backup = "backup" 1a

16 restore = "restore" 1a

17 migration = "migration" 1a

18 bulk_import = "bulk_import" 1a

19 

20 

21class ReportSummaryStatus(str, enum.Enum): 1a

22 in_progress = "in-progress" 1a

23 success = "success" 1a

24 failure = "failure" 1a

25 partial = "partial" 1a

26 

27 

28class ReportEntryCreate(MealieModel): 1a

29 report_id: UUID4 1a

30 timestamp: datetime.datetime = Field(default_factory=get_utc_now) 1a

31 success: bool = True 1a

32 message: str 1a

33 exception: str = "" 1a

34 

35 

36class ReportEntryOut(ReportEntryCreate): 1a

37 id: UUID4 1a

38 model_config = ConfigDict(from_attributes=True) 1a

39 

40 

41class ReportCreate(MealieModel): 1a

42 timestamp: datetime.datetime = Field(default_factory=get_utc_now) 1a

43 category: ReportCategory 1a

44 group_id: UUID4 1a

45 name: str 1a

46 status: ReportSummaryStatus = ReportSummaryStatus.in_progress 1a

47 

48 

49class ReportSummary(ReportCreate): 1a

50 id: UUID4 1a

51 

52 

53class ReportOut(ReportSummary): 1a

54 entries: list[ReportEntryOut] = [] 1a

55 model_config = ConfigDict(from_attributes=True) 1a

56 

57 @classmethod 1a

58 def loader_options(cls) -> list[LoaderOption]: 1a

59 return [joinedload(ReportModel.entries)] 1bc