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