lavkach3

Форк
0
/
transactional.py 
26 строк · 671.0 Байт
1
from enum import Enum
2
from functools import wraps
3

4
from core.db import session
5

6

7
class Propagation(Enum):
8
    REQUIRED = "required"
9
    REQUIRED_NEW = "required_new"
10

11

12
class Transactional:
13
    def __init__(self, propagation: Propagation = Propagation.REQUIRED):
14
        self.propagation = propagation
15

16
    def __call__(self, function):
17
        @wraps(function)
18
        async def decorator(*args, **kwargs):
19
            try:
20
                result = await function(*args, **kwargs)
21
                await session.commit()
22
            except Exception as e:
23
                await session.rollback()
24
                raise e
25
            return result
26
        return decorator
27

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.