Pridani skriptu pro pridani elevace, uprava prace s transakcemi

This commit is contained in:
Michal Kváček
2023-09-12 11:00:36 +02:00
parent ed5df4f953
commit 64cb544e2d
22 changed files with 519 additions and 226 deletions
+35
View File
@@ -0,0 +1,35 @@
import asyncio
import functools
from typing import Callable
from database import async_session
def transactional(func: Callable) -> Callable:
@functools.wraps(func)
async def _wrapper(*args, **kwargs):
# db_session = db_session_context.get()
# if db_session:
# return func(*args, **kwargs)
db_session = async_session()
print("STARTUJI TRANSAKCI")
db_session.begin()
# db_session_context.set(db_session)
try:
kwargs['db'] = db_session
result = await func(*args, **kwargs)
await db_session.commit()
print("KONEC TRANSAKCE V DEKORATORU")
except Exception as e:
await db_session.rollback()
raise
finally:
await db_session.close()
# db_session_context.set(None)
return result
return _wrapper