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
|