The backend no longer mentions MinIO anywhere: MinioClient -> GarageClient (minio_client.py -> garage_client.py), MINIO_* env vars -> GARAGE_*, and the `minio` Python package is replaced with `boto3` (AWS's generic S3 client) since Garage is the only storage backend this project targets now. S3 API semantics are unchanged, so document_service.py's behavior is identical — this is a naming and dependency swap, not a logic change. Also updates test fixtures/names (FakeMinioClient -> FakeGarageClient, FakeMinioSDK -> FakeS3SDK) and storage/README.md, which no longer frames Garage as a MinIO replacement (that migration note has served its purpose now that no MinIO reference remains in the codebase). Backend: 54/54 tests passing. Frontend: 38/38 tests passing (unaffected, verified for regressions since it talks to the backend only through the unchanged REST API).
37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
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)
|