"""Модуль управления изображениями и их очистки.""" import logging import os from datetime import datetime from config import settings from database.database import db logger = logging.getLogger(__name__) async def cleanup_expired_images() -> int: """ Удалить просроченные изображения. Возвращает количество удалённых изображений. """ expired = await db.get_expired_images() deleted_count = 0 for image in expired: # Удаляем файл file_path = image["file_path"] try: if os.path.exists(file_path): os.remove(file_path) logger.debug(f"Удалён файл: {file_path}") except Exception as e: logger.error(f"Ошибка удаления файла {file_path}: {e}") # Удаляем запись из БД try: await db.delete_image_record(image["id"]) deleted_count += 1 except Exception as e: logger.error(f"Ошибка удаления записи изображения {image['id']}: {e}") if deleted_count > 0: logger.info(f"Удалено {deleted_count} просроченных изображдений") return deleted_count def get_image_path(user_id: int, filename: str) -> str: """ Получить путь для сохранения изображения. Формат: images/{user_id}/{filename} """ user_dir = os.path.join(settings.IMAGES_DIR, str(user_id)) os.makedirs(user_dir, exist_ok=True) return os.path.join(user_dir, filename) def cleanup_user_images(user_id: int) -> None: """Удалить все изображения пользователя (при необходимости).""" user_dir = os.path.join(settings.IMAGES_DIR, str(user_id)) if os.path.exists(user_dir): import shutil shutil.rmtree(user_dir) logger.info(f"Удалены все изображения пользователя {user_id}")