from sqlalchemy import select from models import Deal from repositories.base import BaseRepository from schemas.deal import UpdateDealSchema class DealRepository(BaseRepository): async def get_all(self, board_id: int) -> list[Deal]: stmt = select(Deal).where(Deal.is_deleted.is_(False), Deal.board_id == board_id) result = await self.session.execute(stmt) return list(result.scalars().all()) async def get_by_id(self, deal_id: int) -> Deal | None: stmt = select(Deal).where(Deal.id == deal_id, Deal.is_deleted.is_(False)) result = await self.session.execute(stmt) return result.scalar_one_or_none() async def update(self, deal: Deal, data: UpdateDealSchema) -> Deal: deal.lexorank = data.lexorank if data.lexorank else deal.lexorank deal.name = data.name if data.name else deal.name deal.status_id = data.status_id if data.status_id else deal.status_id self.session.add(deal) await self.session.commit() await self.session.refresh(deal) return deal