chatty / app /services /user.py
GitHub Action
Deploy to Hugging Face Space
3470cf9
Raw
History Blame Contribute Delete
811 Bytes
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)