""" 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