Files
kawai-focus/kawai_focus/database/decor_erors.py

28 lines
1.1 KiB
Python

from typing import Any, Callable, Optional
from sqlalchemy.exc import IntegrityError, OperationalError, NoResultFound
from pydantic import ValidationError
from kawai_focus.main import Logger
from kawai_focus.utils.errors import ErrorMessage
def crud_error_guard(func: Callable[..., Any]) -> Callable[..., Optional[Any]] | None:
"""Декоратор для обработки ошибок CRUD"""
def wrapper(*args: Any, **kwargs: Any) -> Optional[Any] | None:
try:
result = func(*args, **kwargs)
return result
except ConnectionError as err:
Logger.error(f'{ErrorMessage.CONNECTION_ERROR.value}: {err}')
except IntegrityError as err:
Logger.error(f'{ErrorMessage.INTEGRITY_ERROR.value}: {err}')
except OperationalError as err:
Logger.error(f'{ErrorMessage.OPERATIONAL_ERROR.value}: {err}')
except ValidationError as err:
Logger.error(f'{ErrorMessage.VALIDATION_ERROR.value}: {err}')
except NoResultFound as err:
Logger.error(f'{ErrorMessage.NO_RESULT_FOUND.value}: {err}')
return wrapper