from functools import lru_cache import meilisearch from minio import Minio from app.config import settings from app.document_service import DocumentService from app.minio_client import MinioClient from app.search_client import SearchClient @lru_cache def _get_minio_sdk() -> Minio: return Minio( settings.minio_endpoint, access_key=settings.minio_access_key, secret_key=settings.minio_secret_key, secure=False, ) @lru_cache def _get_meilisearch_sdk() -> meilisearch.Client: return meilisearch.Client(settings.meilisearch_host, settings.meilisearch_api_key) @lru_cache def get_document_service() -> DocumentService: minio_client = MinioClient(_get_minio_sdk(), settings.minio_bucket) search_client = SearchClient(_get_meilisearch_sdk(), settings.meilisearch_index) return DocumentService(minio_client, search_client) @lru_cache def get_search_client() -> SearchClient: return SearchClient(_get_meilisearch_sdk(), settings.meilisearch_index)