feat: deals create, update, delete

This commit is contained in:
2025-08-24 12:51:16 +04:00
parent c862544ae0
commit dd1f4145ae
4 changed files with 97 additions and 12 deletions

View File

@ -1,10 +1,11 @@
from datetime import datetime
from typing import Optional
from sqlalchemy import select
from models import Deal
from repositories.base import BaseRepository
from schemas.deal import UpdateDealSchema
from schemas.deal import UpdateDealSchema, CreateDealSchema
class DealRepository(BaseRepository):
@ -22,6 +23,15 @@ class DealRepository(BaseRepository):
result = await self.session.execute(stmt)
return result.scalar_one_or_none()
async def create(self, data: CreateDealSchema) -> Deal:
deal_data = data.model_dump()
deal_data["created_at"] = datetime.now()
deal = Deal(**deal_data)
self.session.add(deal)
await self.session.commit()
await self.session.refresh(deal)
return deal
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
@ -31,3 +41,13 @@ class DealRepository(BaseRepository):
await self.session.commit()
await self.session.refresh(deal)
return deal
async def delete(self, deal: Deal, is_soft: bool):
if not is_soft:
await self.session.delete(deal)
await self.session.commit()
return
deal.is_deleted = True
self.session.add(deal)
await self.session.commit()