connect database
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from .database import DbSessionMiddleware
|
||||
from .get_user import GetUserMiddleware
|
||||
|
||||
__all__ = ["GetUserMiddleware"]
|
||||
__all__ = ["DbSessionMiddleware", "GetUserMiddleware"]
|
||||
|
||||
18
app/bot/middlewares/database.py
Normal file
18
app/bot/middlewares/database.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from typing import Any, Awaitable, Callable
|
||||
|
||||
from aiogram import BaseMiddleware
|
||||
from aiogram.types import Update
|
||||
|
||||
from app.infrastructure.database import get_session
|
||||
|
||||
|
||||
class DbSessionMiddleware(BaseMiddleware):
|
||||
async def __call__(
|
||||
self,
|
||||
handler: Callable[[Update, dict[str, Any]], Awaitable[Any]],
|
||||
event: Update,
|
||||
data: dict[str, Any],
|
||||
):
|
||||
async with get_session() as session:
|
||||
data["session"] = session
|
||||
return await handler(event, data)
|
||||
@@ -1,7 +1,9 @@
|
||||
from typing import Any, Awaitable, Callable
|
||||
|
||||
from aiogram import BaseMiddleware
|
||||
from aiogram.types import Update
|
||||
from aiogram.types import Update, User
|
||||
|
||||
from app.infrastructure.database.crud import create_user, get_user_by_tg_id
|
||||
|
||||
|
||||
class GetUserMiddleware(BaseMiddleware):
|
||||
@@ -11,5 +13,14 @@ class GetUserMiddleware(BaseMiddleware):
|
||||
event: Update,
|
||||
data: dict[str, Any],
|
||||
):
|
||||
data.update(user={"is_admin": False})
|
||||
return await handler(event, data)
|
||||
session = data["session"]
|
||||
tg_user: User = data.get("event_from_user")
|
||||
user = await get_user_by_tg_id(session, tg_user.id)
|
||||
if user is None:
|
||||
user = await create_user(
|
||||
session,
|
||||
tg_user.id,
|
||||
tg_user.username,
|
||||
)
|
||||
data["user"] = user
|
||||
return await handler(event, data)
|
||||
|
||||
Reference in New Issue
Block a user