"""Сервис для работы с пользователями.""" from typing import Optional from sqlalchemy import select from app.db.session import async_session_maker from app.models.user import User async def get_or_create_user(tg_user_id: int, username: Optional[str] = None) -> User: """Получить или создать пользователя. Args: tg_user_id: ID пользователя в Telegram username: Имя пользователя в Telegram Returns: User: Объект пользователя """ async with async_session_maker() as session: # Пробуем найти пользователя query = select(User).where(User.tg_user_id == tg_user_id) result = await session.execute(query) user = result.scalar_one_or_none() if not user: # Создаем нового пользователя user = User(tg_user_id=tg_user_id, username=username) session.add(user) await session.commit() await session.refresh(user) return user