Coverage for opt/mealie/lib/python3.12/site-packages/mealie/db/models/household/cookbook.py: 92%
37 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:32 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 15:32 +0000
1from typing import TYPE_CHECKING, Optional 1a
3from sqlalchemy import Boolean, ForeignKey, Integer, String, UniqueConstraint, orm 1a
4from sqlalchemy.orm import Mapped, mapped_column 1a
6from .._model_base import BaseMixins, SqlAlchemyBase 1a
7from .._model_utils import guid 1a
8from .._model_utils.auto_init import auto_init 1a
9from ..recipe.category import Category, cookbooks_to_categories 1a
10from ..recipe.tag import Tag, cookbooks_to_tags 1a
11from ..recipe.tool import Tool, cookbooks_to_tools 1a
13if TYPE_CHECKING: 13 ↛ 14line 13 didn't jump to line 14 because the condition on line 13 was never true1a
14 from ..group import Group
15 from .household import Household
18class CookBook(SqlAlchemyBase, BaseMixins): 1a
19 __tablename__ = "cookbooks" 1a
20 __table_args__: tuple[UniqueConstraint, ...] = ( 1a
21 UniqueConstraint("slug", "group_id", name="cookbook_slug_group_id_key"),
22 )
24 id: Mapped[guid.GUID] = mapped_column(guid.GUID, primary_key=True, default=guid.GUID.generate) 1a
25 position: Mapped[int] = mapped_column(Integer, nullable=False, default=1) 1a
27 group_id: Mapped[guid.GUID | None] = mapped_column(guid.GUID, ForeignKey("groups.id"), index=True) 1a
28 group: Mapped[Optional["Group"]] = orm.relationship("Group", back_populates="cookbooks") 1a
29 household_id: Mapped[guid.GUID | None] = mapped_column(guid.GUID, ForeignKey("households.id"), index=True) 1a
30 household: Mapped[Optional["Household"]] = orm.relationship("Household", back_populates="cookbooks") 1a
32 name: Mapped[str] = mapped_column(String, nullable=False) 1a
33 slug: Mapped[str] = mapped_column(String, nullable=False, index=True) 1a
34 description: Mapped[str | None] = mapped_column(String, default="") 1a
35 public: Mapped[str | None] = mapped_column(Boolean, default=False) 1a
36 query_filter_string: Mapped[str] = mapped_column(String, nullable=False, default="") 1a
38 # Old filters - deprecated in favor of query filter strings
39 categories: Mapped[list[Category]] = orm.relationship( 1a
40 Category, secondary=cookbooks_to_categories, single_parent=True
41 )
42 require_all_categories: Mapped[bool | None] = mapped_column(Boolean, default=True) 1a
44 tags: Mapped[list[Tag]] = orm.relationship(Tag, secondary=cookbooks_to_tags, single_parent=True) 1a
45 require_all_tags: Mapped[bool | None] = mapped_column(Boolean, default=True) 1a
47 tools: Mapped[list[Tool]] = orm.relationship(Tool, secondary=cookbooks_to_tools, single_parent=True) 1a
48 require_all_tools: Mapped[bool | None] = mapped_column(Boolean, default=True) 1a
50 @auto_init() 1a
51 def __init__(self, **_) -> None: 1a
52 pass 1cdebfghijk
54 def update(self, *args, **kwarg): 1a
55 self.__init__(*args, **kwarg) 1b