Files
Crm-Backend/repositories/deal.py

30 lines
1.1 KiB
Python

from typing import Optional
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) -> Optional[Deal]:
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