"""Main application entry point.""" from fastapi import FastAPI from src.middlewares.logging import configure_logging, get_logger from src.middlewares.cors import add_cors_middleware from src.middlewares.rate_limit import limiter, _rate_limit_exceeded_handler from slowapi.errors import RateLimitExceeded from src.api.v1.document import router as document_router from src.api.v1.chat import router as chat_router from src.api.v1.room import router as room_router from src.api.v1.users import router as users_router from src.api.v1.knowledge import router as knowledge_router from src.db.postgres.init_db import init_db import uvicorn # Configure logging configure_logging() logger = get_logger("main") # Create FastAPI app app = FastAPI( title="DataEyond Agentic Service", description="Multi-agent AI backend with RAG capabilities", version="0.1.0" ) # Add middleware add_cors_middleware(app) app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) # Include routers app.include_router(users_router) app.include_router(document_router) app.include_router(knowledge_router) app.include_router(room_router) app.include_router(chat_router) @app.on_event("startup") async def startup_event(): """Initialize database on startup.""" logger.info("Starting application...") await init_db() logger.info("Database initialized") @app.get("/") async def root(): """Root endpoint.""" return { "status": "ok", "service": "DataEyond Agentic Service", "version": "0.1.0" } @app.get("/health") async def health_check(): """Health check endpoint.""" return {"status": "healthy"} if __name__ == "__main__": uvicorn.run( "src.main:app", host="0.0.0.0", port=8000, reload=True )