Coverage for dormatory/api/main.py: 86%

22 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2025-08-04 00:22 +0000

1""" 

2DORMATORY FastAPI Application 

3 

4Main FastAPI application for the DORMATORY hierarchical data storage API. 

5""" 

6 

7from fastapi import FastAPI 

8from fastapi.middleware.cors import CORSMiddleware 

9 

10from .routes import objects, types, links, permissions, versioning, attributes 

11from .dependencies import engine 

12from dormatory.models.dormatory_model import create_tables 

13 

14# Create FastAPI app 

15app = FastAPI( 

16 title="DORMATORY API", 

17 description="API for storing and querying structured hierarchical data using flat tables", 

18 version="0.1.0", 

19 docs_url="/docs", 

20 redoc_url="/redoc" 

21) 

22 

23# Add CORS middleware 

24app.add_middleware( 

25 CORSMiddleware, 

26 allow_origins=["*"], 

27 allow_credentials=True, 

28 allow_methods=["*"], 

29 allow_headers=["*"], 

30) 

31 

32# Create database tables on startup 

33@app.on_event("startup") 

34async def startup_event(): 

35 """Create database tables on application startup.""" 

36 create_tables(engine) 

37 

38# Include routers 

39app.include_router(objects.router, prefix="/api/v1/objects", tags=["objects"]) 

40app.include_router(types.router, prefix="/api/v1/types", tags=["types"]) 

41app.include_router(links.router, prefix="/api/v1/links", tags=["links"]) 

42app.include_router(permissions.router, prefix="/api/v1/permissions", tags=["permissions"]) 

43app.include_router(versioning.router, prefix="/api/v1/versioning", tags=["versioning"]) 

44app.include_router(attributes.router, prefix="/api/v1/attributes", tags=["attributes"]) 

45 

46 

47@app.get("/") 

48async def root(): 

49 """Root endpoint with API information.""" 

50 return { 

51 "message": "Welcome to DORMATORY API", 

52 "version": "0.1.0", 

53 "docs": "/docs", 

54 "description": "API for hierarchical data storage using flat tables" 

55 } 

56 

57 

58@app.get("/health") 

59async def health_check(): 

60 """Health check endpoint.""" 

61 return {"status": "healthy", "service": "dormatory-api"}