Skip to content

presentation.routers.api.v1.admin.jobs

src.presentation.routers.api.v1.admin.jobs

Background jobs admin handlers.

Handler functions for admin background jobs monitoring endpoint. Routes are registered via ROUTE_REGISTRY in routes/registry.py.

Handlers

get_jobs_status - Get jobs service status

All handlers require
  • JWT authentication (valid access token)
  • Admin role (Casbin RBAC check)

Classes

Functions

get_jobs_status async

get_jobs_status(
    request: Request,
    current_user: CurrentUser = Depends(get_current_user),
    _admin_check: None = Depends(
        require_casbin_role("admin")
    ),
    monitor: JobsMonitor = Depends(get_jobs_monitor),
) -> JobsStatusResponse | JSONResponse

Get background jobs service status.

GET /api/v1/admin/jobs → 200 OK

Returns detailed status of the dashtam-jobs background worker service, including queue length, Redis connectivity, and health status.

Requires admin role (Casbin RBAC).

Parameters:

Name Type Description Default
request Request

FastAPI request object.

required
current_user CurrentUser

Authenticated admin user (from JWT).

Depends(get_current_user)
_admin_check None

Admin role verification (Casbin).

Depends(require_casbin_role('admin'))
monitor JobsMonitor

JobsMonitor instance for querying job queue status.

Depends(get_jobs_monitor)

Returns:

Type Description
JobsStatusResponse | JSONResponse

JobsStatusResponse on success (200 OK).

JobsStatusResponse | JSONResponse

JSONResponse with error on failure.

Source code in src/presentation/routers/api/v1/admin/jobs.py
async def get_jobs_status(
    request: Request,
    current_user: CurrentUser = Depends(get_current_user),
    _admin_check: None = Depends(require_casbin_role("admin")),
    monitor: "JobsMonitor" = Depends(get_jobs_monitor),
) -> JobsStatusResponse | JSONResponse:
    """Get background jobs service status.

    GET /api/v1/admin/jobs → 200 OK

    Returns detailed status of the dashtam-jobs background worker service,
    including queue length, Redis connectivity, and health status.

    Requires admin role (Casbin RBAC).

    Args:
        request: FastAPI request object.
        current_user: Authenticated admin user (from JWT).
        _admin_check: Admin role verification (Casbin).
        monitor: JobsMonitor instance for querying job queue status.

    Returns:
        JobsStatusResponse on success (200 OK).
        JSONResponse with error on failure.
    """
    result = await monitor.check_health()

    if isinstance(result, Failure):
        error = ApplicationError(
            code=ApplicationErrorCode.COMMAND_EXECUTION_FAILED,
            message="Failed to check jobs status",
        )
        return ErrorResponseBuilder.from_application_error(
            error=error,
            request=request,
            trace_id=get_trace_id() or "",
        )

    status = result.value
    return JobsStatusResponse(
        healthy=status.healthy,
        queue_length=status.queue_length,
        redis_connected=status.redis_connected,
        error=status.error,
    )