Source code for pi_portal.modules.tasks.api.server

"""The task scheduler API server."""

from typing import TYPE_CHECKING

from fastapi import FastAPI
from pi_portal.modules.tasks.api.lifespan import lifespan
from pi_portal.modules.tasks.api.router import RouterFactory

if TYPE_CHECKING:  # pragma: no cover
  from pi_portal.modules.tasks.scheduler import TaskScheduler


[docs]class Server: """The task scheduler API server."""
[docs] def __init__(self, scheduler: "TaskScheduler") -> None: """:param scheduler: The scheduler instance to provide an API for.""" router_factory = RouterFactory(scheduler) self.api = FastAPI( docs_url=None, lifespan=lifespan, redoc_url=None, ) self.api.state.scheduler = scheduler self.router = router_factory.create() self.api.include_router(self.router)