Newer
Older
cortex-hub / ai-hub / app / api / dependencies.py
# app/api/dependencies.py
from fastapi import Depends, HTTPException, status
from typing import List
from sqlalchemy.orm import Session
from app.db.session import SessionLocal
from app.core.retrievers.base_retriever import Retriever
from app.core.services.document import DocumentService
from app.core.services.rag import RAGService
from app.core.services.tts import TTSService
from app.core.services.stt import STTService
from app.core.vector_store.faiss_store import FaissVectorStore


# This is a dependency
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

# This is another common dependency
async def get_current_user(token: str):
    # In a real app, you would decode the token and fetch the user
    if not token:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
    return {"email": "user@example.com", "id": 1} # Dummy user


class ServiceContainer:
    def __init__(self, vector_store: FaissVectorStore, retrievers: List[Retriever], tts_service: TTSService, stt_service: STTService):
        # Initialize all services within the container
        self.document_service = DocumentService(vector_store=vector_store)
        self.rag_service = RAGService(
            retrievers=retrievers
        )
        self.tts_service = tts_service
        self.stt_service = stt_service