33 lines
939 B
Python
33 lines
939 B
Python
"""# 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}) |