33 lines
917 B
Python
33 lines
917 B
Python
"""# Summary
|
|
|
|
CRUD service wiring for the job aggregate via the hexa container.
|
|
"""
|
|
from hexa import build
|
|
|
|
from domain.job.models import Job
|
|
from domain.job.ports.db import JobDocument
|
|
from infra.adapters.service import CrudsServiceAdaptor
|
|
|
|
|
|
class JobCrudsService(CrudsServiceAdaptor[Job, JobDocument]):
|
|
"""Job CRUD service resolving :class:`JobDocument` from a repo.
|
|
|
|
Notes:
|
|
Instances are created by :func:`get_job_service`. The ``model`` and
|
|
``schema`` class attributes bind the domain model and its document type.
|
|
"""
|
|
|
|
model = Job
|
|
schema = JobDocument
|
|
|
|
|
|
def get_job_service(repo) -> JobCrudsService:
|
|
"""Build a job CRUD service wired to ``repo``.
|
|
|
|
Args:
|
|
repo (Any): Mongo-backed job repository from :func:`create_job_repo`.
|
|
|
|
Returns:
|
|
JobCrudsService: Ready-to-use job CRUD service.
|
|
"""
|
|
return build(JobCrudsService, instances={"repo": repo}) |