from sqlalchemy.ext.asyncio import AsyncSession from modules.fulfillment_base.models import DealProduct from modules.fulfillment_base.repositories import DealProductRepository from modules.fulfillment_base.schemas.deal_product import * from services.mixins import ServiceGetAllMixin class DealProductService(ServiceGetAllMixin[DealProduct, DealProductSchema]): schema_class = DealProductSchema def __init__(self, session: AsyncSession): self.repository = DealProductRepository(session) async def create( self, request: CreateDealProductRequest ) -> CreateDealProductResponse: await self.repository.create(request.entity) deal_product = await self.repository.get_by_id( request.entity.deal_id, request.entity.product_id ) return CreateDealProductResponse( entity=DealProductSchema.model_validate(deal_product), message="Товар добавлен в сделку", ) async def update( self, deal_id: int, product_id: int, data: UpdateDealProductRequest ) -> UpdateDealProductResponse: entity = await self.repository.get_by_id(deal_id, product_id) await self.repository.update(entity, data.entity) return UpdateDealProductResponse(message="Товар сделки обновлен") async def delete(self, deal_id: int, product_id: int) -> DeleteDealProductResponse: entity = await self.repository.get_by_id(deal_id, product_id) await self.repository.delete(entity) return DeleteDealProductResponse(message="Товар удален из сделки")