connect database

This commit is contained in:
2025-09-27 09:13:20 +03:00
parent 5982351dd2
commit 1a49545fff
16 changed files with 180 additions and 38 deletions

View File

@@ -1,3 +1,4 @@
from .database import DbSessionMiddleware
from .get_user import GetUserMiddleware
__all__ = ["GetUserMiddleware"]
__all__ = ["DbSessionMiddleware", "GetUserMiddleware"]

View 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)

View File

@@ -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)