File size: 1,826 Bytes
bef5e76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
08df5ae
bef5e76
08df5ae
bef5e76
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"""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(
        "main:app",
        host="0.0.0.0",
        port=7860,
        reload=True
    )