"""# Summary CRUD service wiring for the appointment aggregate via the hexa container. """ from hexa import build from domain.appointments.models import Appointment from domain.appointments.ports.db import AppointmentDocument from infra.adapters.service import CrudsServiceAdaptor class AppointmentCrudsService(CrudsServiceAdaptor[Appointment, AppointmentDocument]): """Appointment CRUD service resolving :class:`AppointmentDocument` from a repo. Notes: Instances are created by :func:`get_appointment_service`. The ``model`` and ``schema`` class attributes bind the domain model and its document. """ model = Appointment schema = AppointmentDocument def get_appointment_service(repo) -> AppointmentCrudsService: """Build an appointment CRUD service wired to ``repo``. Args: repo (Any): Integer-id appointment repository from :func:`create_appointment_repo`. Returns: AppointmentCrudsService: Ready-to-use appointment CRUD service. """ return build(AppointmentCrudsService, instances={"repo": repo})