temp_space / chat.py
Suhaib-neo
Add files from GitHub repo with SQLite files tracked by LFS
883d885
from datetime import datetime
from bson.objectid import ObjectId
def load_user_sessions(username, sessions_collection, last_session_id=None):
"""
Load sessions for a user. Restore last active session if possible.
Returns: (sessions_list, current_session_or_None, messages_list)
"""
if sessions_collection is None:
return [], None, []
sessions = list(sessions_collection.find({"username": username}).sort("timestamp", -1))
current_session = None
messages = []
if sessions:
if last_session_id:
try:
last = sessions_collection.find_one({"_id": ObjectId(last_session_id)})
except Exception:
last = None
if last:
current_session = last
# messages will be loaded by caller or by calling load_chat_history
if not current_session:
current_session = sessions[0]
# Note: do NOT load messages here unless you also have messages_collection.
# Return sessions and current_session; caller can call load_chat_history with messages_collection.
return sessions, current_session, messages
def load_chat_history(session_id, messages_collection):
"""
Loads messages for a given chat session from messages_collection.
"""
if messages_collection is None:
return []
try:
msgs = list(messages_collection.find({"session_id": session_id}).sort("timestamp", 1))
return [{"role": m.get("role", "assistant"), "content": m.get("content", "")} for m in msgs]
except Exception:
return []
def save_message(session_id, role, content, messages_collection):
"""
Save a message to the chat history in messages_collection.
"""
if messages_collection is None:
return None
try:
doc = {
"session_id": session_id,
"role": role,
"content": content,
"timestamp": datetime.utcnow(),
}
return messages_collection.insert_one(doc).inserted_id
except Exception:
return None