from contextlib import contextmanager from sqlalchemy.orm import Session from exceptions import FailedUploadException import logging logger = logging.getLogger(__name__) @contextmanager def db_transaction(db: Session): """Simple context manager for database transactions""" try: yield db.commit() except FailedUploadException as failed_upload: logger.error(f"Failed upload: {str(failed_upload.message)}") db.rollback() db.add(failed_upload.file_upload_record) db.commit() raise except Exception as e: logger.error(f"Database error: {str(e)}") db.rollback() raise