Coverage for opt/mealie/lib/python3.12/site-packages/mealie/db/models/group/report.py: 95%

38 statements  

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

1from datetime import datetime 1a

2from typing import TYPE_CHECKING 1a

3 

4from pydantic import ConfigDict 1a

5from sqlalchemy import ForeignKey, orm 1a

6from sqlalchemy.orm import Mapped, mapped_column 1a

7from sqlalchemy.sql.sqltypes import Boolean, String 1a

8 

9from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase 1a

10 

11from .._model_utils.auto_init import auto_init 1a

12from .._model_utils.datetime import NaiveDateTime, get_utc_now 1a

13from .._model_utils.guid import GUID 1a

14 

15if TYPE_CHECKING: 15 ↛ 16line 15 didn't jump to line 16 because the condition on line 15 was never true1a

16 from .group import Group 

17 

18 

19class ReportEntryModel(SqlAlchemyBase, BaseMixins): 1a

20 __tablename__ = "report_entries" 1a

21 id: Mapped[GUID] = mapped_column(GUID, primary_key=True, default=GUID.generate) 1a

22 

23 success: Mapped[bool | None] = mapped_column(Boolean, default=False) 1a

24 message: Mapped[str] = mapped_column(String, nullable=True) 1a

25 exception: Mapped[str] = mapped_column(String, nullable=True) 1a

26 timestamp: Mapped[datetime] = mapped_column(NaiveDateTime, nullable=False, default=get_utc_now) 1a

27 

28 report_id: Mapped[GUID] = mapped_column(GUID, ForeignKey("group_reports.id"), nullable=False, index=True) 1a

29 report: Mapped["ReportModel"] = orm.relationship("ReportModel", back_populates="entries") 1a

30 

31 @auto_init() 1a

32 def __init__(self, **_) -> None: 1a

33 pass 

34 

35 

36class ReportModel(SqlAlchemyBase, BaseMixins): 1a

37 __tablename__ = "group_reports" 1a

38 id: Mapped[GUID] = mapped_column(GUID, primary_key=True, default=GUID.generate) 1a

39 

40 name: Mapped[str] = mapped_column(String, nullable=False) 1a

41 status: Mapped[str] = mapped_column(String, nullable=False) 1a

42 category: Mapped[str] = mapped_column(String, index=True, nullable=False) 1a

43 timestamp: Mapped[datetime] = mapped_column(NaiveDateTime, nullable=False, default=get_utc_now) 1a

44 

45 entries: Mapped[list[ReportEntryModel]] = orm.relationship( 1a

46 ReportEntryModel, back_populates="report", cascade="all, delete-orphan" 

47 ) 

48 

49 # Relationships 

50 group_id: Mapped[GUID] = mapped_column(GUID, ForeignKey("groups.id"), nullable=False, index=True) 1a

51 group: Mapped["Group"] = orm.relationship("Group", back_populates="group_reports", single_parent=True) 1a

52 model_config = ConfigDict(exclude=["entries"]) 1a

53 

54 @auto_init() 1a

55 def __init__(self, **_) -> None: 1a

56 pass