refactor: repository create mixin

This commit is contained in:
2025-09-05 00:04:09 +04:00
parent c632fb8037
commit e5be35be35
9 changed files with 54 additions and 43 deletions

View File

@ -5,13 +5,17 @@ from sqlalchemy.orm import joinedload
from models import Deal, CardStatusHistory, Board
from repositories.base import BaseRepository
from repositories.mixins import RepDeleteMixin
from repositories.mixins import RepDeleteMixin, RepCreateMixin
from schemas.base import SortDir
from schemas.deal import UpdateDealSchema, CreateDealSchema
from utils.sorting import apply_sorting
class DealRepository(BaseRepository, RepDeleteMixin[Deal]):
class DealRepository(
BaseRepository, RepDeleteMixin[Deal], RepCreateMixin[Deal, CreateDealSchema]
):
entity_class = Deal
async def get_all(
self,
page: Optional[int],
@ -63,13 +67,6 @@ class DealRepository(BaseRepository, RepDeleteMixin[Deal]):
result = await self.session.execute(stmt)
return result.scalar_one_or_none()
async def create(self, data: CreateDealSchema) -> Deal:
deal = Deal(**data.model_dump())
self.session.add(deal)
await self.session.commit()
await self.session.refresh(deal)
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
deal.name = data.name if data.name else deal.name