feat: added CRUD operations for timers, created decorator for error handling, added schema ; refactor: updated functions and ; test: moved tests from to , written tests for CRUD operations on timers and database.
This commit is contained in:
27
kawai_focus/database/decor_erors.py
Normal file
27
kawai_focus/database/decor_erors.py
Normal file
@@ -0,0 +1,27 @@
|
||||
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
|
||||
Reference in New Issue
Block a user