from sqlalchemy.ext.asyncio import AsyncSession from modules.fulfillment_base.models import DealService from modules.fulfillment_base.repositories import DealServiceRepository from modules.fulfillment_base.schemas.deal_service import * from services.mixins import ServiceGetAllMixin class DealServiceService(ServiceGetAllMixin[DealService, DealServiceSchema]): schema_class = DealServiceSchema def __init__(self, session: AsyncSession): self.repository = DealServiceRepository(session) async def create( self, request: CreateDealServiceRequest ) -> CreateDealServiceResponse: await self.repository.create(request.entity) deal_service = await self.repository.get_by_id( request.entity.deal_id, request.entity.service_id ) return CreateDealServiceResponse( entity=DealServiceSchema.model_validate(deal_service), message="Услуга добавлена в сделку", ) async def update( self, deal_id: int, service_id: int, data: UpdateDealServiceRequest ) -> UpdateDealServiceResponse: entity = await self.repository.get_by_id(deal_id, service_id) await self.repository.update(entity, data.entity) return UpdateDealServiceResponse(message="Услуга сделки обновлена") async def delete(self, deal_id: int, service_id: int) -> DeleteDealServiceResponse: entity = await self.repository.get_by_id(deal_id, service_id) await self.repository.delete(entity) return DeleteDealServiceResponse(message="Услуга удалена из сделки")