feat: groups

This commit is contained in:
2025-10-17 19:48:51 +04:00
parent 35869e2ea5
commit 6b1b4109c6
11 changed files with 288 additions and 12 deletions

View File

@ -9,6 +9,7 @@ from .built_in_module import ( # noqa: F401
built_in_module_dependencies as built_in_module_dependencies,
)
from .deal import Deal as Deal
from .deal_group import DealGroup as DealGroup
from .project import Project as Project
from .status import Status as Status, DealStatusHistory as DealStatusHistory

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
from models import Status, Board, DealStatusHistory, DealGroup
from modules.clients.models import Client
@ -34,6 +34,13 @@ class Deal(BaseModel, IdMixin, SoftDeleteMixin, CreatedAtMixin):
lazy="noload",
)
group_id: Mapped[Optional[int]] = mapped_column(
ForeignKey("deal_groups.id"), default=None, server_default=None
)
group: Mapped[Optional["DealGroup"]] = relationship(
lazy="noload", back_populates="deals"
)
# module client
client_id: Mapped[Optional[int]] = mapped_column(
ForeignKey("clients.id", ondelete="CASCADE"),

17
models/deal_group.py Normal file
View File

@ -0,0 +1,17 @@
from typing import TYPE_CHECKING, Optional
from sqlalchemy.orm import mapped_column, Mapped, relationship
from models.base import BaseModel
from models.mixins import IdMixin
if TYPE_CHECKING:
from models import Deal
class DealGroup(BaseModel, IdMixin):
__tablename__ = "deal_groups"
name: Mapped[Optional[str]] = mapped_column()
lexorank: Mapped[str] = mapped_column()
deals: Mapped[list["Deal"]] = relationship(back_populates="group", lazy="noload")