from fastapi import Depends
from app.config import get_config
from app.services.file_service import FileService
from app.services.faiss_service import FAISSService



def get_file_service(config=Depends(get_config)) -> FileService:
    """
    Dependency function to provide a FileService instance.

    :param config: Configuration object obtained via dependency injection.
    :return: An instance of FileService initialized with the PDF folder path.
    """
    if not hasattr(config, "PDF_FOLDER") or not config.PDF_FOLDER:
        raise ValueError("PDF_FOLDER is not configured in the application settings.")
    return FileService(folder_path=config.PDF_FOLDER)


def get_faiss_service(file_service=Depends(get_file_service)) -> FAISSService:
    """
    Dependency function to provide a FAISSService instance.

    :param config: Configuration object obtained via dependency injection.
    :param file_service: FileService instance for handling PDFs and documents.
    :return: An instance of FAISSService initialized with vectorstore and embeddings.
    """
    config = get_config()
   
    return FAISSService(
        openai_api_key=config.OPENAI_API_KEY,
        index_path="local_faiss_index",
    )
