Files

44 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from sqlalchemy.orm import selectinload
from modules.fulfillment_base.models.service import ServicesKit
from modules.fulfillment_base.repositories import ServiceRepository
from modules.fulfillment_base.schemas.services_kit import (
CreateServicesKitSchema,
UpdateServicesKitSchema,
)
from repositories.mixins import *
class ServicesKitRepository(
RepCrudMixin[ServicesKit, CreateServicesKitSchema, UpdateServicesKitSchema],
):
entity_class = ServicesKit
entity_not_found_msg = "Набор услуг не найден"
def _process_get_by_id_stmt(self, stmt: Select) -> Select:
return stmt.options(selectinload(ServicesKit.services))
async def create(self, data: CreateServicesKitSchema) -> int:
if data.services is not None:
service_ids: list[int] = [service.id for service in data.services]
data.services = await ServiceRepository(self.session).get_by_ids(
service_ids
)
kit = ServicesKit(
name=data.name, service_type=data.service_type, services=data.services
)
self.session.add(kit)
await self.session.commit()
await self.session.refresh(kit)
return kit.id
async def update(
self, service_kit: ServicesKit, data: UpdateServicesKitSchema
) -> ServicesKit:
if data.services is not None:
service_ids: list[int] = [service.id for service in data.services]
data.services = await ServiceRepository(self.session).get_by_ids(
service_ids
)
return await self._apply_update_data_to_model(service_kit, data, True)