Coverage for main.py: 82%
17 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-05-31 21:56 +0000
« prev ^ index » next coverage.py v7.14.1, created at 2026-05-31 21:56 +0000
1from fastapi import FastAPI
2from fastapi.middleware.cors import CORSMiddleware
3from contextlib import asynccontextmanager
4import database
5from routers import vehicles, predictive
7@asynccontextmanager
8async def lifespan(app: FastAPI):
9 # Startup actions
10 database.init_db()
11 yield
12 # Shutdown actions
13 database.close_db()
15app = FastAPI(
16 title="WhipStats API",
17 description="Backend API serving MOT history, vehicle data, and predictive models.",
18 version="1.0.0",
19 lifespan=lifespan,
20 docs_url="/api/docs",
21 openapi_url="/api/openapi.json"
22)
24# Enable CORS for local dev and frontend domains
25app.add_middleware(
26 CORSMiddleware,
27 allow_origins=["http://localhost:3000", "https://whipstats.com", "https://whipstats.co.uk"],
28 allow_credentials=True,
29 allow_methods=["*"],
30 allow_headers=["*"],
31)
33@app.get("/health", tags=["Health"])
34async def health_check():
35 return {"status": "ok"}
37app.include_router(vehicles.router)
38app.include_router(predictive.router)