Rifqi Hafizuddin
[NOTICKET][DB] pisahin db credential ke folder model. add ingestion endpoint at db_client to use db pipeline. add router db_client di main.
347a73a | """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.api.v1.db_client import router as db_client_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.include_router(db_client_router) | |
| async def startup_event(): | |
| """Initialize database on startup.""" | |
| logger.info("Starting application...") | |
| await init_db() | |
| logger.info("Database initialized") | |
| async def root(): | |
| """Root endpoint.""" | |
| return { | |
| "status": "ok", | |
| "service": "DataEyond Agentic Service", | |
| "version": "0.1.0" | |
| } | |
| async def health_check(): | |
| """Health check endpoint.""" | |
| return {"status": "healthy"} | |
| if __name__ == "__main__": | |
| uvicorn.run( | |
| "main:app", | |
| host="0.0.0.0", | |
| port=7860, | |
| reload=True | |
| ) | |