refactor: repository get by id mixin

This commit is contained in:
2025-09-05 09:53:16 +04:00
parent e5be35be35
commit c1d3ac98f0
5 changed files with 40 additions and 49 deletions

View File

@ -1,17 +1,16 @@
from typing import Optional
from sqlalchemy import select, func
from models import Status, Deal
from repositories.base import BaseRepository
from repositories.mixins import RepDeleteMixin, RepCreateMixin
from repositories.mixins import RepDeleteMixin, RepCreateMixin, GetByIdMixin
from schemas.status import UpdateStatusSchema, CreateStatusSchema
class StatusRepository(
BaseRepository,
RepDeleteMixin[Status],
RepCreateMixin[Deal, CreateStatusSchema],
RepCreateMixin[Status, CreateStatusSchema],
GetByIdMixin[Status],
):
entity_class = Status
@ -24,13 +23,6 @@ class StatusRepository(
result = await self.session.execute(stmt)
return list(result.scalars().all())
async def get_by_id(self, status_id: int) -> Optional[Status]:
stmt = select(Status).where(
Status.id == status_id, Status.is_deleted.is_(False)
)
result = await self.session.execute(stmt)
return result.scalar_one_or_none()
async def get_deals_count(self, status_id: int) -> int:
stmt = select(func.count(Deal.id)).where(Deal.status_id == status_id)
result = await self.session.execute(stmt)