82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# Add the root directory to PYTHONPATH
|
|
root_dir = Path(__file__).parent.parent
|
|
sys.path.append(str(root_dir))
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from src.config.database import engine, Base
|
|
from src.api.auth_routes import router as auth_router
|
|
from src.api.admin_routes import router as admin_router
|
|
from src.api.chat_routes import router as chat_router
|
|
from src.api.session_routes import router as session_router
|
|
from src.api.agent_routes import router as agent_router
|
|
from src.api.contact_routes import router as contact_router
|
|
from src.api.mcp_server_routes import router as mcp_server_router
|
|
from src.api.tool_routes import router as tool_router
|
|
from src.api.client_routes import router as client_router
|
|
from src.config.settings import settings
|
|
from src.utils.logger import setup_logger
|
|
from google.adk.artifacts.in_memory_artifact_service import InMemoryArtifactService
|
|
from google.adk.sessions import DatabaseSessionService
|
|
from google.adk.memory import InMemoryMemoryService
|
|
|
|
# Configure logger
|
|
logger = setup_logger(__name__)
|
|
|
|
|
|
session_service = DatabaseSessionService(db_url=settings.POSTGRES_CONNECTION_STRING)
|
|
artifacts_service = InMemoryArtifactService()
|
|
memory_service = InMemoryMemoryService()
|
|
|
|
# FastAPI initialization
|
|
app = FastAPI(
|
|
title=settings.API_TITLE,
|
|
description=settings.API_DESCRIPTION,
|
|
version=settings.API_VERSION,
|
|
)
|
|
|
|
# CORS configuration
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=settings.CORS_ORIGINS,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# PostgreSQL configuration
|
|
POSTGRES_CONNECTION_STRING = os.getenv(
|
|
"POSTGRES_CONNECTION_STRING",
|
|
"postgresql://postgres:root@localhost:5432/evo_ai"
|
|
)
|
|
|
|
# Create database tables
|
|
Base.metadata.create_all(bind=engine)
|
|
|
|
API_PREFIX = "/api/v1"
|
|
|
|
# Include routes
|
|
app.include_router(auth_router, prefix=API_PREFIX)
|
|
app.include_router(admin_router, prefix=API_PREFIX)
|
|
app.include_router(mcp_server_router, prefix=API_PREFIX)
|
|
app.include_router(tool_router, prefix=API_PREFIX)
|
|
app.include_router(client_router, prefix=API_PREFIX)
|
|
app.include_router(chat_router, prefix=API_PREFIX)
|
|
app.include_router(session_router, prefix=API_PREFIX)
|
|
app.include_router(agent_router, prefix=API_PREFIX)
|
|
app.include_router(contact_router, prefix=API_PREFIX)
|
|
|
|
|
|
@app.get("/")
|
|
def read_root():
|
|
return {
|
|
"message": "Welcome to Evo AI API",
|
|
"documentation": "/docs",
|
|
"version": settings.API_VERSION,
|
|
"auth": "To access the API, use JWT authentication via '/api/v1/auth/login'"
|
|
}
|