from functools import lru_cache import meilisearch from app.config import settings from app.document_service import DocumentService from app.local_file_client import LocalFileClient from app.search_client import SearchClient @lru_cache def _get_file_client() -> LocalFileClient: return LocalFileClient(settings.storage_dir) def _get_meilisearch_sdk() -> meilisearch.Client: return meilisearch.Client(settings.meilisearch_host, settings.meilisearch_api_key) @lru_cache def get_document_service() -> DocumentService: file_client = _get_file_client() search_client = SearchClient(_get_meilisearch_sdk(), settings.meilisearch_index) return DocumentService(file_client, search_client) @lru_cache def get_search_client() -> SearchClient: return SearchClient(_get_meilisearch_sdk(), settings.meilisearch_index)