from datetime import datetime from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from app.models.uploaded_image import UploadedImage from app.services.image_service import ImageService async def cleanup_expired_images(db: AsyncSession) -> int: service = ImageService() result = await db.execute(select(UploadedImage).where(UploadedImage.expires_at < datetime.utcnow())) images = result.scalars().all() for image in images: service.delete(image.storage_key) await db.delete(image) await db.commit() return len(images)