DocHub/backend/app/dependencies.py
Tianyang 360e9e5a14 refactor: rename all minio references to garage, drop minio SDK for boto3
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).
2026-08-01 10:51:49 +08:00

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)