Spaces:
Sleeping
Sleeping
| import logging | |
| from fastapi import FastAPI | |
| from contextlib import asynccontextmanager | |
| from insucompass.config import settings | |
| from insucompass.services.database import setup_database | |
| from insucompass.api.endpoints import router as api_router # Import our API router | |
| # Configure logging for the main application | |
| logging.basicConfig(level=settings.LOG_LEVEL, format='%(asctime)s - %(levelname)s - %(message)s') | |
| logger = logging.getLogger(__name__) | |
| async def lifespan(app: FastAPI): | |
| """ | |
| Context manager for application startup and shutdown events. | |
| Ensures database setup runs when the application starts. | |
| """ | |
| logger.info("Application startup initiated.") | |
| try: | |
| setup_database() | |
| logger.info("Database setup completed during startup.") | |
| except Exception as e: | |
| logger.critical(f"Failed to setup database during startup: {e}") | |
| # Depending on criticality, you might want to raise the exception to prevent startup | |
| # For now, we log and allow startup, but this might lead to further errors. | |
| yield | |
| logger.info("Application shutdown initiated.") | |
| # Initialize the FastAPI application | |
| app = FastAPI( | |
| title="InsuCompass AI Backend", | |
| description="Your AI guide to U.S. Health Insurance, powered by Agentic RAG.", | |
| version="0.1.0", | |
| lifespan=lifespan # Attach the lifespan context manager | |
| ) | |
| # Include our API router | |
| app.include_router(api_router, prefix="/api") | |
| async def root(): | |
| """ | |
| Root endpoint for the API. | |
| """ | |
| return {"message": "Welcome to InsuCompass AI Backend! Visit /docs for API documentation."} | |
| # Instructions to run the application: | |
| # Save this file as insucompass/main.py | |
| # From your project root directory, run: | |
| # uvicorn insucompass.main:app --reload --host 0.0.0.0 --port 8000 | |
| # The --reload flag is useful for development, it reloads the server on code changes. |