Coverage for opt/mealie/lib/python3.12/site-packages/mealie/db/models/recipe/shared.py: 88%
23 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from datetime import UTC, datetime, timedelta
2from typing import TYPE_CHECKING
3from uuid import uuid4
5import sqlalchemy as sa
6from sqlalchemy.orm import Mapped, mapped_column
8from mealie.db.models._model_base import BaseMixins, SqlAlchemyBase
9from mealie.db.models._model_utils.auto_init import auto_init
10from mealie.db.models._model_utils.datetime import NaiveDateTime
11from mealie.db.models._model_utils.guid import GUID
13if TYPE_CHECKING: 13 ↛ 14line 13 didn't jump to line 14 because the condition on line 13 was never true
14 from . import RecipeModel
17def defaut_expires_at_time() -> datetime:
18 return datetime.now(UTC) + timedelta(days=30)
21class RecipeShareTokenModel(SqlAlchemyBase, BaseMixins):
22 __tablename__ = "recipe_share_tokens"
23 id: Mapped[GUID] = mapped_column(GUID, primary_key=True, default=uuid4)
25 group_id: Mapped[GUID] = mapped_column(GUID, sa.ForeignKey("groups.id"), nullable=False, index=True)
27 recipe_id: Mapped[GUID] = mapped_column(GUID, sa.ForeignKey("recipes.id"), nullable=False, index=True)
28 recipe: Mapped["RecipeModel"] = sa.orm.relationship("RecipeModel", back_populates="share_tokens", uselist=False)
30 expires_at: Mapped[datetime] = mapped_column(NaiveDateTime, nullable=False)
32 @auto_init()
33 def __init__(self, **_) -> None:
34 pass