23 lines
660 B
Python
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 |