1from __future__ import annotations
2
3from collections.abc import Callable
4from typing import TYPE_CHECKING
5
6from plain.logs import app_logger
7
8if TYPE_CHECKING:
9 from .models import JobProcess, JobResult
10
11
12class AppLoggerMiddleware:
13 def __init__(self, run_job: Callable[[JobProcess], JobResult]) -> None:
14 self.run_job = run_job
15
16 def __call__(self, job: JobProcess) -> JobResult:
17 with app_logger.include_context(
18 job_request_uuid=str(job.job_request_uuid), job_process_uuid=str(job.uuid)
19 ):
20 return self.run_job(job)