from modules.fulfillment_base.models import Service from modules.fulfillment_base.models.service import ServicePriceRange from modules.fulfillment_base.schemas.service import ( CreateServiceSchema, UpdateServiceSchema, ) from repositories.mixins import * class ServiceRepository( BaseRepository, RepGetAllMixin[Service], RepDeleteMixin[Service], RepUpdateMixin[Service, UpdateServiceSchema], RepGetByIdMixin[Service], ): entity_class = Service entity_not_found_msg = "Услуга не найдена" async def create(self, data: CreateServiceSchema) -> int: price_ranges = [] for range in data.price_ranges: price_ranges.append( ServicePriceRange( from_quantity=range.from_quantity, to_quantity=range.to_quantity, price=range.price, ) ) data_dict = data.model_dump() data_dict["price_ranges"] = price_ranges data_dict["category_id"] = data.category.id del data_dict["category"] service = Service(**data_dict) self.session.add(service) await self.session.commit() await self.session.refresh(service) return service.id async def update(self, service: Service, data: UpdateServiceSchema) -> Service: return await self._apply_update_data_to_model(service, data, True) async def get_by_ids(self, ids: list[int]) -> list[Service]: stmt = select(Service).where(Service.id.in_(ids)) result = await self.session.execute(stmt) return result.scalars().all()