[FEAT] (사용자 로직): 인증 서비스 로직 구현 중
v0.1.1 (2025-11-13) - 사용자 관련 인증 서비스 로직 구현 중
This commit is contained in:
47
src/utils/db_decorators.py
Normal file
47
src/utils/db_decorators.py
Normal file
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
DB 트랜잭션 데코레이더
|
||||
"""
|
||||
|
||||
import functools
|
||||
from typing import Callable
|
||||
from extensions import custom_logger
|
||||
import settings
|
||||
|
||||
logger = custom_logger(f"{settings.LOG_PREFIX})_db_decorator")
|
||||
|
||||
_db = None
|
||||
|
||||
def get_db():
|
||||
"""DB Lazy 로딩"""
|
||||
global _db
|
||||
if _db is None:
|
||||
from extensions import db
|
||||
_db = db
|
||||
return db
|
||||
|
||||
def transactional(f: Callable) -> Callable:
|
||||
"""
|
||||
데이터 베이스 트랜잭션 관리하는 데코레이터
|
||||
"""
|
||||
|
||||
@functools.wraps(f)
|
||||
def decorated_function(*args, **kwargs):
|
||||
# DB 가져오기
|
||||
db = get_db()
|
||||
try:
|
||||
# 함수 실행
|
||||
result = f(*args, **kwargs)
|
||||
|
||||
# 성공 시 커밋
|
||||
db.session.commit()
|
||||
logger.debug(f"트랜잭션 커밋 완료 - {f.__name__}")
|
||||
|
||||
return result
|
||||
|
||||
except Exception as e:
|
||||
# 실패 시 롤백
|
||||
db.session.rollback()
|
||||
logger.error(f"트랜잭션 롤백 - {f.__name__}")
|
||||
raise
|
||||
|
||||
return decorated_function()
|
||||
Reference in New Issue
Block a user