feat: cards, attributes and modules
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
from datetime import datetime
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from sqlalchemy import ForeignKey, Column, Integer, DateTime, String
|
||||
from sqlalchemy import ForeignKey
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from models import BaseModel
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from models import Board
|
||||
from models import Board, Card, User
|
||||
|
||||
|
||||
class DealStatus(BaseModel):
|
||||
__tablename__ = "deal_statuses"
|
||||
class CardStatus(BaseModel):
|
||||
__tablename__ = 'card_statuses'
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
name: Mapped[str] = mapped_column(nullable=False)
|
||||
@@ -19,43 +20,44 @@ class DealStatus(BaseModel):
|
||||
is_deleted: Mapped[bool] = mapped_column(default=False, nullable=False)
|
||||
|
||||
board_id: Mapped[int] = mapped_column(ForeignKey('boards.id'), nullable=False)
|
||||
board: Mapped["Board"] = relationship("Board", back_populates="deal_statuses")
|
||||
board: Mapped['Board'] = relationship('Board', back_populates='statuses')
|
||||
|
||||
|
||||
class DealStatusHistory(BaseModel):
|
||||
__tablename__ = 'deals_status_history'
|
||||
id = Column(Integer, autoincrement=True, primary_key=True, index=True)
|
||||
class CardStatusHistory(BaseModel):
|
||||
__tablename__ = 'cards_status_history'
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
|
||||
deal_id = Column(Integer, ForeignKey('deals.id'), nullable=False, comment='ID сделки')
|
||||
deal = relationship('Deal', back_populates='status_history')
|
||||
card_id: Mapped[int] = mapped_column(ForeignKey('cards.id'), nullable=False, comment='ID карточки')
|
||||
card: Mapped['Card'] = relationship('Card', back_populates='status_history')
|
||||
|
||||
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
||||
user = relationship('User')
|
||||
user_id: Mapped[int] = mapped_column(ForeignKey('users.id'), nullable=False)
|
||||
user: Mapped['User'] = relationship('User')
|
||||
|
||||
changed_at = Column(DateTime, nullable=False, comment='Дата и время когда произошла смена статуса')
|
||||
changed_at: Mapped[datetime] = mapped_column(nullable=False, comment='Дата и время когда произошла смена статуса')
|
||||
|
||||
from_status_id: Mapped[int] = mapped_column(
|
||||
ForeignKey('deal_statuses.id'),
|
||||
ForeignKey('card_statuses.id'),
|
||||
nullable=False,
|
||||
comment='Предыдущий статус',
|
||||
)
|
||||
from_status: Mapped[DealStatus] = relationship(
|
||||
'DealStatus',
|
||||
from_status: Mapped[CardStatus] = relationship(
|
||||
'CardStatus',
|
||||
foreign_keys=[from_status_id],
|
||||
lazy='joined',
|
||||
)
|
||||
|
||||
to_status_id: Mapped[int] = mapped_column(
|
||||
ForeignKey('deal_statuses.id'),
|
||||
ForeignKey('card_statuses.id'),
|
||||
nullable=False,
|
||||
comment='Новый статус',
|
||||
)
|
||||
to_status: Mapped[DealStatus] = relationship(
|
||||
'DealStatus',
|
||||
to_status: Mapped[CardStatus] = relationship(
|
||||
'CardStatus',
|
||||
foreign_keys=[to_status_id],
|
||||
lazy='joined',
|
||||
)
|
||||
|
||||
next_status_deadline = Column(DateTime,
|
||||
comment='Дедлайн до которого сделку нужно перевести на следующий этап')
|
||||
comment = Column(String, nullable=False, comment='Коментарий', server_default='')
|
||||
next_status_deadline: Mapped[datetime] = mapped_column(
|
||||
comment='Дедлайн до которого сделку нужно перевести на следующий этап',
|
||||
)
|
||||
comment: Mapped[str] = mapped_column(nullable=False, comment='Комментарий', server_default='')
|
||||
|
||||
Reference in New Issue
Block a user