from __future__ import annotations from sqlalchemy.ext.asyncio import AsyncSession from app.db.models import User from app.schemas.user import UserCreate, UserRead async def get_or_create_user(session: AsyncSession, telegram_id: int) -> UserRead: """Return UserRead by telegram_id, creating a row with defaults if absent.""" user = await session.get(User, telegram_id) if user is None: payload = UserCreate(telegram_id=telegram_id) user = User( id=payload.telegram_id, level=payload.level, voice_name=payload.voice_name, topic=payload.topic, speech_rate=payload.speech_rate, ) session.add(user) await session.commit() await session.refresh(user) return UserRead.model_validate(user)