Coverage for opt/mealie/lib/python3.12/site-packages/mealie/db/models/recipe/shared.py: 84%

23 statements  

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

1from datetime import UTC, datetime, timedelta 1a

2from typing import TYPE_CHECKING 1a

3from uuid import uuid4 1a

4 

5import sqlalchemy as sa 1a

6from sqlalchemy.orm import Mapped, mapped_column 1a

7 

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

9from mealie.db.models._model_utils.auto_init import auto_init 1a

10from mealie.db.models._model_utils.datetime import NaiveDateTime 1a

11from mealie.db.models._model_utils.guid import GUID 1a

12 

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

14 from . import RecipeModel 

15 

16 

17def defaut_expires_at_time() -> datetime: 1a

18 return datetime.now(UTC) + timedelta(days=30) 

19 

20 

21class RecipeShareTokenModel(SqlAlchemyBase, BaseMixins): 1a

22 __tablename__ = "recipe_share_tokens" 1a

23 id: Mapped[GUID] = mapped_column(GUID, primary_key=True, default=uuid4) 1a

24 

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

26 

27 recipe_id: Mapped[GUID] = mapped_column(GUID, sa.ForeignKey("recipes.id"), nullable=False, index=True) 1a

28 recipe: Mapped["RecipeModel"] = sa.orm.relationship("RecipeModel", back_populates="share_tokens", uselist=False) 1a

29 

30 expires_at: Mapped[datetime] = mapped_column(NaiveDateTime, nullable=False) 1a

31 

32 @auto_init() 1a

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

34 pass