Skip to content

App Factory

The create_app() function builds and configures the FastAPI application. Stores are attached to app.state and accessed by route handlers via request.app.state.track_store.

app

FastAPI application factory.

Examples:

>>> app = create_app()
>>> app.title
'SeqChain API'

create_app

create_app() -> FastAPI

Create and configure the SeqChain FastAPI application.

Stores are attached to app.state. Routes access them via request.app.state.track_store and request.app.state.genome_store.

Returns:

Type Description
FastAPI

Configured FastAPI application with all routers registered.

Examples:

>>> app = create_app()
>>> hasattr(app.state, 'track_store')
True
Source code in src/seqchain/api/app.py
def create_app() -> FastAPI:
    """Create and configure the SeqChain FastAPI application.

    Stores are attached to ``app.state``. Routes access them via
    ``request.app.state.track_store`` and ``request.app.state.genome_store``.

    Returns:
        Configured FastAPI application with all routers registered.

    Examples:
        >>> app = create_app()
        >>> hasattr(app.state, 'track_store')
        True
    """
    app = FastAPI(title="SeqChain API", version="0.1.0")
    app.state.track_store = TrackStore()
    app.state.genome_store = GenomeStore()

    from seqchain.api.routes import files, genomes, jobs, methods, tracks

    @app.get("/api/health", tags=["health"])
    def health():
        return {"status": "ok"}

    app.include_router(methods.router, prefix="/api/methods", tags=["methods"])
    app.include_router(jobs.router, prefix="/api/jobs", tags=["jobs"])
    app.include_router(files.router, prefix="/api/files", tags=["files"])
    app.include_router(tracks.router, prefix="/api/tracks", tags=["tracks"])
    app.include_router(genomes.router, prefix="/api/genomes", tags=["genomes"])

    return app