nakama/moderation/backend-py/utils/minio_client.py

69 lines
1.9 KiB
Python
Raw Permalink Normal View History

2025-12-14 23:45:41 +00:00
"""
MinIO client for file storage
"""
from typing import Optional
from minio import Minio
from minio.error import S3Error
import logging
from config import settings
logger = logging.getLogger(__name__)
minio_client: Optional[Minio] = None
def init_minio():
"""Initialize MinIO client"""
global minio_client
if not settings.MINIO_ENABLED:
logger.info("MinIO отключен")
return None
try:
endpoint = f"{settings.MINIO_ENDPOINT}:{settings.MINIO_PORT}"
minio_client = Minio(
endpoint,
access_key=settings.MINIO_ACCESS_KEY,
secret_key=settings.MINIO_SECRET_KEY,
secure=settings.MINIO_USE_SSL
)
# Test connection
if not minio_client.bucket_exists(settings.MINIO_BUCKET):
logger.warning(f"Bucket '{settings.MINIO_BUCKET}' не существует")
else:
logger.info(f"✅ MinIO подключен: {endpoint}, bucket: {settings.MINIO_BUCKET}")
return minio_client
except S3Error as e:
logger.error(f"❌ Ошибка подключения к MinIO: {e}")
return None
except Exception as e:
logger.error(f"❌ Ошибка инициализации MinIO: {e}")
return None
def get_minio_client():
"""Get MinIO client instance"""
return minio_client
async def delete_file(file_path: str):
"""Delete file from MinIO"""
if not minio_client:
logger.warning("MinIO client not initialized")
return False
try:
minio_client.remove_object(settings.MINIO_BUCKET, file_path)
logger.info(f"✅ Файл удален из MinIO: {file_path}")
return True
except S3Error as e:
logger.error(f"❌ Ошибка удаления файла из MinIO: {e}")
return False