llm-chatbot/app/crud.py
2025-09-14 17:15:48 +00:00

29 lines
987 B
Python

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