feat: deal tags

This commit is contained in:
2025-10-19 12:12:08 +04:00
parent d7c7d1775f
commit ffee658349
16 changed files with 355 additions and 8 deletions

View File

@ -7,7 +7,7 @@ from models.base import BaseModel
from models.mixins import SoftDeleteMixin, CreatedAtMixin, IdMixin
if TYPE_CHECKING:
from models import Status, Board, DealStatusHistory, DealGroup
from models import Status, Board, DealStatusHistory, DealGroup, DealTag
from modules.clients.models import Client
@ -41,6 +41,14 @@ class Deal(BaseModel, IdMixin, SoftDeleteMixin, CreatedAtMixin):
lazy="noload", back_populates="deals"
)
tags: Mapped[list["DealTag"]] = relationship(
secondary="deals_deal_tags",
back_populates="deals",
lazy="selectin",
primaryjoin="Deal.id == deals_deal_tags.c.deal_id",
secondaryjoin="and_(DealTag.id == deals_deal_tags.c.deal_tag_id, DealTag.is_deleted == False)",
)
# module client
client_id: Mapped[Optional[int]] = mapped_column(
ForeignKey("clients.id", ondelete="CASCADE"),