from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.api.artifacts import router as artifacts_router from app.database import init_db from app.config import settings import logging # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) # Create FastAPI app app = FastAPI( title="Test Artifact Data Lake", description="API for storing and querying test artifacts including CSV, JSON, binary files, and packet captures", version="1.0.0", docs_url="/docs", redoc_url="/redoc" ) # Configure CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(artifacts_router) @app.on_event("startup") async def startup_event(): """Initialize database on startup""" logger.info("Initializing database...") init_db() logger.info(f"Using storage backend: {settings.storage_backend}") logger.info("Application started successfully") @app.get("/") async def root(): """Root endpoint""" return { "message": "Test Artifact Data Lake API", "version": "1.0.0", "docs": "/docs", "storage_backend": settings.storage_backend } @app.get("/health") async def health_check(): """Health check endpoint""" return {"status": "healthy"} if __name__ == "__main__": import uvicorn uvicorn.run( "app.main:app", host=settings.api_host, port=settings.api_port, reload=True )