"""# Summary CRUD service wiring for the item aggregate via the hexa container. """ from hexa import build from domain.item.models import Item from domain.item.ports.db import ItemDocument from infra.adapters.service import CrudsServiceAdaptor class ItemCrudsService(CrudsServiceAdaptor[Item, ItemDocument]): """Item CRUD service resolving :class:`ItemDocument` from a repo. Notes: Instances are created by :func:`get_item_service`. The ``model`` and ``schema`` class attributes bind the domain model and its document type. """ model = Item schema = ItemDocument def get_item_service(repo) -> ItemCrudsService: """Build an item CRUD service wired to ``repo``. Args: repo (Any): Mongo-backed item repository from :func:`create_item_repo`. Returns: ItemCrudsService: Ready-to-use item CRUD service. """ return build(ItemCrudsService, instances={"repo": repo})