umar-100's picture
deployment config
aea1c12
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()