emu-rag / src /api /selectors /chat /get_session.py
Sarp Bilgiç
chat history ready for frontend integration, me endpoint
ad84a49
from sqlmodel import select
from sqlmodel.ext.asyncio.session import AsyncSession
from src.api.models.chat import ChatSession
from typing import Optional, List
import uuid
async def get_chat_session_by_id(
session_id: uuid.UUID,
user_id: Optional[int],
db: AsyncSession
) -> Optional[ChatSession]:
query = select(ChatSession).where(ChatSession.id == session_id)
result = await db.exec(query)
session = result.first()
if not session:
return None
if session.user_id is not None:
if session.user_id != user_id or user_id is None:
return None
else:
if user_id is not None:
return None
return session
async def get_chat_sessions(
user_id: int,
db: AsyncSession,
limit: int = 20,
offset: int = 0
) -> List[ChatSession]:
query = (
select(ChatSession)
.where(ChatSession.user_id == user_id)
.where(ChatSession.is_active == True)
.order_by(ChatSession.updated_at.desc())
.limit(limit)
.offset(offset)
)
result = await db.exec(query)
return result.all()