from sqlalchemy.future import select from sqlalchemy.ext.asyncio import AsyncSession from . import models async def get_or_create_user(db: AsyncSession, telegram_id: str): result = await db.execute(select(models.User).where(models.User.telegram_id == telegram_id)) user = result.scalar_one_or_none() if not user: user = models.User(telegram_id=telegram_id) db.add(user) await db.commit() await db.refresh(user) return user async def add_message(db: AsyncSession, user, role, content): msg = models.Message(user_id=user.id, role=role, content=content) db.add(msg) await db.commit() await db.refresh(msg) return msg async def get_conversation(db: AsyncSession, user, limit=10): result = await db.execute( select(models.Message) .where(models.Message.user_id == user.id) .order_by(models.Message.timestamp.desc()) .limit(limit) ) return list(reversed(result.scalars().all()))