Files
problem-bank/backend/main.py
2026-03-06 15:52:34 +08:00

44 lines
1.4 KiB
Python

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import threading
from backend.database import Base, engine, SessionLocal
from backend.routers import auth, categories, exports, imports, practice, questions, stats
from backend.services.import_queue_service import reset_stale_running_jobs, run_worker_loop
app = FastAPI(title="Problem Bank API", version="1.0.0")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
Base.metadata.create_all(bind=engine)
@app.on_event("startup")
def startup() -> None:
db = SessionLocal()
try:
reset_stale_running_jobs(db)
finally:
db.close()
thread = threading.Thread(target=run_worker_loop, daemon=True)
thread.start()
app.include_router(auth.router, prefix="/api/auth", tags=["auth"])
app.include_router(questions.router, prefix="/api/questions", tags=["questions"])
app.include_router(imports.router, prefix="/api/import", tags=["imports"])
app.include_router(exports.router, prefix="/api/export", tags=["exports"])
app.include_router(categories.router, prefix="/api/categories", tags=["categories"])
app.include_router(practice.router, prefix="/api/practice", tags=["practice"])
app.include_router(stats.router, prefix="/api/stats", tags=["stats"])
@app.get("/api/health")
def health() -> dict:
return {"status": "ok"}