- templates/app now carries the vet server (parents/pets/treatments/vets/appointments) - added domain/jobs slice with /jobs OpenAPI paths and Job schema (x- extensions) - added pipelines/shared scaffold (loader, ports, registry) and the appointment_reminder family; worker.py dispatches jobs by kind - wired init.py, config.py worker knobs, .env.example, docker-compose worker - unit tests for jobs routes, the pipeline family and worker dispatch (12 passing)
34 lines
918 B
Python
34 lines
918 B
Python
"""# Summary
|
|
|
|
CRUD service wiring for the job aggregate via the hexa container.
|
|
"""
|
|
from hexa import build
|
|
|
|
from domain.jobs.models import Job
|
|
from domain.jobs.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): Integer-id job repository from :func:`create_job_repo`.
|
|
|
|
Returns:
|
|
JobCrudsService: Ready-to-use job CRUD service.
|
|
"""
|
|
return build(JobCrudsService, instances={"repo": repo})
|