Spaces:
Sleeping
Sleeping
import sqlite3 | |
from datetime import datetime | |
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage | |
DB_NAME = "research_assistant.db" | |
def get_db_connection(): | |
conn = sqlite3.connect(DB_NAME) | |
conn.row_factory = sqlite3.Row | |
return conn | |
def create_application_logs(): | |
conn = get_db_connection() | |
conn.execute('''CREATE TABLE IF NOT EXISTS application_logs | |
(id INTEGER PRIMARY KEY AUTOINCREMENT, | |
session_id TEXT, | |
user_query TEXT, | |
gpt_response TEXT, | |
model TEXT, | |
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)''') | |
conn.close() | |
def create_document_store(): | |
conn = get_db_connection() | |
conn.execute('''CREATE TABLE IF NOT EXISTS document_store | |
(id INTEGER PRIMARY KEY AUTOINCREMENT, | |
session_id TEXT, | |
filename TEXT, | |
content TEXT, | |
upload_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP)''') | |
conn.close() | |
def insert_application_logs(session_id, user_query, gpt_response, model): | |
conn = get_db_connection() | |
conn.execute('INSERT INTO application_logs (session_id, user_query, gpt_response, model) VALUES (?, ?, ?, ?)', | |
(session_id, user_query, gpt_response, model)) | |
conn.commit() | |
conn.close() | |
def get_chat_history(session_id): | |
conn = get_db_connection() | |
cursor = conn.cursor() | |
cursor.execute('SELECT user_query, gpt_response FROM application_logs WHERE session_id = ? ORDER BY created_at', (session_id,)) | |
messages = [] | |
for row in cursor.fetchall(): | |
messages.append(HumanMessage(content=row['user_query'])) | |
messages.append(AIMessage(content=row['gpt_response'])) | |
conn.close() | |
return messages | |
def insert_document_record(session_id, filename, content): | |
conn = get_db_connection() | |
cursor = conn.cursor() | |
cursor.execute('INSERT INTO document_store (session_id, filename, content) VALUES (?, ?, ?)', | |
(session_id, filename, content)) | |
file_id = cursor.lastrowid | |
conn.commit() | |
conn.close() | |
return file_id | |
def delete_document_record(file_id): | |
conn = get_db_connection() | |
conn.execute('DELETE FROM document_store WHERE id = ?', (file_id,)) | |
conn.commit() | |
conn.close() | |
return True | |
def get_all_documents(session_id): | |
conn = get_db_connection() | |
cursor = conn.cursor() | |
cursor.execute('SELECT id, filename, upload_timestamp FROM document_store WHERE session_id = ? ORDER BY upload_timestamp DESC', (session_id,)) | |
documents = cursor.fetchall() | |
conn.close() | |
return [dict(doc) for doc in documents] | |
def get_file_content(file_id: int) -> str | None: | |
conn = get_db_connection() | |
try: | |
cursor = conn.cursor() | |
cursor.execute('SELECT content FROM document_store WHERE id = ?', (file_id,)) | |
row = cursor.fetchone() | |
if row is not None: | |
return row[0] | |
return None | |
finally: | |
conn.close() | |
# Initialize the database tables | |
create_application_logs() | |
create_document_store() | |