from functools import lru_cache import boto3 import meilisearch from app.config import settings from app.document_service import DocumentService from app.garage_client import GarageClient from app.search_client import SearchClient @lru_cache def _get_garage_sdk(): return boto3.client( "s3", endpoint_url=f"http://{settings.garage_endpoint}", aws_access_key_id=settings.garage_access_key, aws_secret_access_key=settings.garage_secret_key, ) @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: garage_client = GarageClient(_get_garage_sdk(), settings.garage_bucket) search_client = SearchClient(_get_meilisearch_sdk(), settings.meilisearch_index) return DocumentService(garage_client, search_client) @lru_cache def get_search_client() -> SearchClient: return SearchClient(_get_meilisearch_sdk(), settings.meilisearch_index)