init
This commit is contained in:
29
app/crud.py
Normal file
29
app/crud.py
Normal file
@@ -0,0 +1,29 @@
|
||||
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()))
|
||||
Reference in New Issue
Block a user