refactor: update repository mixin

This commit is contained in:
2025-09-07 21:28:06 +04:00
parent 7a76da4058
commit 67634836dc
5 changed files with 42 additions and 26 deletions

View File

@ -5,7 +5,12 @@ from sqlalchemy.orm import joinedload
from models import Deal, CardStatusHistory, Board
from repositories.base import BaseRepository
from repositories.mixins import RepDeleteMixin, RepCreateMixin, GetByIdMixin
from repositories.mixins import (
RepDeleteMixin,
RepCreateMixin,
GetByIdMixin,
RepUpdateMixin,
)
from schemas.base import SortDir
from schemas.deal import UpdateDealSchema, CreateDealSchema
from utils.sorting import apply_sorting
@ -15,6 +20,7 @@ class DealRepository(
BaseRepository,
RepDeleteMixin[Deal],
RepCreateMixin[Deal, CreateDealSchema],
RepUpdateMixin[Deal, UpdateDealSchema],
GetByIdMixin[Deal],
):
entity_class = Deal
@ -65,9 +71,8 @@ class DealRepository(
return stmt.options(joinedload(Deal.status), joinedload(Deal.board))
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.board_id = data.board_id if data.board_id else deal.board_id
fields = ["lexorank", "name", "board_id"]
deal = await self._apply_update_data_to_model(deal, data, False, fields)
if data.status_id and deal.status_id != data.status_id:
deal.status_history.append(