48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
"""Ten31Portal FastAPI application."""
|
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
from fastapi import FastAPI
|
|
from starlette.middleware.sessions import SessionMiddleware
|
|
|
|
from ten31portal.config import SESSION_SECRET
|
|
from ten31portal.db_init import run_migrations
|
|
from ten31portal.routers.auth_router import router as auth_router
|
|
from ten31portal.routers.audit_router import router as audit_router
|
|
from ten31portal.routers.entity_router import router as entity_router
|
|
from ten31portal.routers.holding_router import router as holding_router
|
|
from ten31portal.routers.position_router import router as position_router
|
|
from ten31portal.routers.round_router import router as round_router
|
|
from ten31portal.routers.import_router import router as import_router
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
run_migrations()
|
|
yield
|
|
|
|
|
|
app = FastAPI(title="Ten31Portal", version="0.1.0", lifespan=lifespan)
|
|
app.add_middleware(SessionMiddleware, secret_key=SESSION_SECRET)
|
|
app.include_router(auth_router)
|
|
app.include_router(audit_router)
|
|
app.include_router(entity_router)
|
|
app.include_router(holding_router)
|
|
app.include_router(position_router)
|
|
app.include_router(round_router)
|
|
app.include_router(import_router)
|
|
|
|
|
|
@app.get("/api/health")
|
|
def health() -> dict[str, str]:
|
|
return {"status": "ok"}
|
|
|
|
|
|
def cli() -> None:
|
|
import uvicorn
|
|
uvicorn.run("ten31portal.main:app", host="0.0.0.0", port=8000, reload=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|