This repository has been archived on 2022-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
2022-10-16 12:39:03 +00:00
|
|
|
from aiogram.dispatcher.middlewares import LifetimeControllerMiddleware
|
|
|
|
from asyncpg.pool import Pool
|
|
|
|
|
2022-10-16 19:50:37 +00:00
|
|
|
from services.repositories import Repos
|
2022-10-16 12:39:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
class DbMiddleware(LifetimeControllerMiddleware):
|
|
|
|
skip_patterns = ["error", "update"]
|
|
|
|
|
|
|
|
def __init__(self, pool: Pool):
|
|
|
|
super().__init__()
|
|
|
|
self.pool = pool
|
|
|
|
|
|
|
|
async def pre_process(self, obj, data, *args):
|
|
|
|
conn = await self.pool.acquire()
|
|
|
|
data["conn"] = conn
|
2022-10-16 19:50:37 +00:00
|
|
|
data["repo"] = Repos(conn)
|
2022-10-16 12:39:03 +00:00
|
|
|
|
|
|
|
async def post_process(self, obj, data, *args):
|
|
|
|
del data["repo"]
|
|
|
|
conn = data.get("conn")
|
|
|
|
if conn:
|
|
|
|
await self.pool.release(conn)
|