69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
"""
|
|
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
|
|
|