giga_tcg/app/db/utils.py
2025-02-07 20:29:39 -05:00

23 lines
660 B
Python

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