feat: status and board in deal schema

This commit is contained in:
2025-09-01 20:33:40 +04:00
parent 57c3ada2fa
commit b9ae3bc18a
2 changed files with 17 additions and 5 deletions

View File

@ -1,6 +1,7 @@
from typing import Optional
from sqlalchemy import select
from sqlalchemy.orm import joinedload
from models import Deal, CardStatusHistory, Board
from repositories.base import BaseRepository
@ -22,7 +23,11 @@ class DealRepository(BaseRepository):
id: Optional[int],
name: Optional[str],
) -> tuple[list[Deal], int]:
stmt = select(Deal).where(Deal.is_deleted.is_(False))
stmt = (
select(Deal)
.options(joinedload(Deal.status), joinedload(Deal.board))
.where(Deal.is_deleted.is_(False))
)
if id:
stmt = stmt.where(Deal.id == id)
@ -49,7 +54,11 @@ class DealRepository(BaseRepository):
return list(result.scalars().all()), total_items
async def get_by_id(self, deal_id: int) -> Optional[Deal]:
stmt = select(Deal).where(Deal.id == deal_id, Deal.is_deleted.is_(False))
stmt = (
select(Deal)
.options(joinedload(Deal.status), joinedload(Deal.board))
.where(Deal.id == deal_id, Deal.is_deleted.is_(False))
)
result = await self.session.execute(stmt)
return result.scalar_one_or_none()
@ -58,7 +67,8 @@ class DealRepository(BaseRepository):
self.session.add(deal)
await self.session.commit()
await self.session.refresh(deal)
return deal
print(deal.id)
return await self.get_by_id(deal.id)
async def update(self, deal: Deal, data: UpdateDealSchema) -> Deal:
deal.lexorank = data.lexorank if data.lexorank else deal.lexorank