feat: cards, attributes and modules
This commit is contained in:
@@ -2,30 +2,30 @@ from typing import Optional
|
||||
|
||||
from sqlalchemy import select, and_, func
|
||||
|
||||
from models import DealStatus, Deal
|
||||
from models import CardStatus, Card
|
||||
from schemas.status import *
|
||||
from services.base import BaseService
|
||||
|
||||
|
||||
class StatusService(BaseService):
|
||||
async def _get_statuses_for_board(self, board_id: int) -> list[DealStatus]:
|
||||
async def _get_statuses_for_board(self, board_id: int) -> list[CardStatus]:
|
||||
stmt = (
|
||||
select(DealStatus)
|
||||
select(CardStatus)
|
||||
.where(
|
||||
and_(
|
||||
DealStatus.board_id == board_id,
|
||||
DealStatus.is_deleted == False,
|
||||
CardStatus.board_id == board_id,
|
||||
CardStatus.is_deleted == False,
|
||||
)
|
||||
)
|
||||
.order_by(DealStatus.ordinal_number)
|
||||
.order_by(CardStatus.ordinal_number)
|
||||
)
|
||||
statuses = (await self.session.scalars(stmt)).all()
|
||||
return list(statuses)
|
||||
|
||||
async def _get_status_by_id(self, status_id: int) -> Optional[DealStatus]:
|
||||
async def _get_status_by_id(self, status_id: int) -> Optional[CardStatus]:
|
||||
stmt = (
|
||||
select(DealStatus)
|
||||
.where(DealStatus.id == status_id)
|
||||
select(CardStatus)
|
||||
.where(CardStatus.id == status_id)
|
||||
)
|
||||
status = await self.session.scalar(stmt)
|
||||
return status
|
||||
@@ -38,7 +38,7 @@ class StatusService(BaseService):
|
||||
statuses[-1].is_finishing = False
|
||||
ordinal_number = statuses[-1].ordinal_number + 1
|
||||
|
||||
status = DealStatus(
|
||||
status = CardStatus(
|
||||
**request.status.model_dump(),
|
||||
ordinal_number=ordinal_number,
|
||||
is_finishing=True,
|
||||
@@ -81,12 +81,12 @@ class StatusService(BaseService):
|
||||
|
||||
async def _count_deals_in_progress(self, status_id: int) -> int:
|
||||
stmt = (
|
||||
select(func.count(Deal.id))
|
||||
select(func.count(Card.id))
|
||||
.where(
|
||||
and_(
|
||||
Deal.current_status_id == status_id,
|
||||
Deal.is_deleted == False,
|
||||
Deal.is_completed == False,
|
||||
Card.current_status_id == status_id,
|
||||
Card.is_deleted == False,
|
||||
Card.is_completed == False,
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -94,12 +94,12 @@ class StatusService(BaseService):
|
||||
|
||||
async def _count_deals(self, status_id: int) -> int:
|
||||
stmt = (
|
||||
select(func.count(Deal.id))
|
||||
.where(Deal.current_status_id == status_id)
|
||||
select(func.count(Card.id))
|
||||
.where(Card.current_status_id == status_id)
|
||||
)
|
||||
return (await self.session.scalars(stmt)).first()
|
||||
|
||||
async def _set_finishing_flag_to_prev_status(self, status: DealStatus):
|
||||
async def _set_finishing_flag_to_prev_status(self, status: CardStatus):
|
||||
statuses = await self._get_statuses_for_board(status.board_id)
|
||||
if len(statuses) < 2:
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user