Coverage for main.py: 82%

17 statements  

« 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 

6 

7@asynccontextmanager 

8async def lifespan(app: FastAPI): 

9 # Startup actions 

10 database.init_db() 

11 yield 

12 # Shutdown actions 

13 database.close_db() 

14 

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) 

23 

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) 

32 

33@app.get("/health", tags=["Health"]) 

34async def health_check(): 

35 return {"status": "ok"} 

36 

37app.include_router(vehicles.router) 

38app.include_router(predictive.router) 

39