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:48 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:48 +0000
1import datetime 1a
2import enum 1a
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
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
14class ReportCategory(str, enum.Enum): 1a
15 backup = "backup" 1a
16 restore = "restore" 1a
17 migration = "migration" 1a
18 bulk_import = "bulk_import" 1a
21class ReportSummaryStatus(str, enum.Enum): 1a
22 in_progress = "in-progress" 1a
23 success = "success" 1a
24 failure = "failure" 1a
25 partial = "partial" 1a
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
36class ReportEntryOut(ReportEntryCreate): 1a
37 id: UUID4 1a
38 model_config = ConfigDict(from_attributes=True) 1a
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
49class ReportSummary(ReportCreate): 1a
50 id: UUID4 1a
53class ReportOut(ReportSummary): 1a
54 entries: list[ReportEntryOut] = [] 1a
55 model_config = ConfigDict(from_attributes=True) 1a
57 @classmethod 1a
58 def loader_options(cls) -> list[LoaderOption]: 1a
59 return [joinedload(ReportModel.entries)] 1bc