Files

85 lines
2.4 KiB
Python
Raw Permalink Normal View History

2025-04-01 22:29:59 -04:00
from datetime import datetime
import sqlite3
import os
import debug as debugModule
from config import Config
def initialize_db():
conn = sqlite3.connect(Config.CONVERSATION_DB_PATH)
c = conn.cursor()
# Create conversations table
c.execute('''CREATE TABLE IF NOT EXISTS conversations
(id INTEGER PRIMARY KEY AUTOINCREMENT,
query TEXT,
response TEXT,
links TEXT,
timestamp DATETIME)''')
# Create code_executions table
c.execute('''CREATE TABLE IF NOT EXISTS code_executions
(id INTEGER PRIMARY KEY AUTOINCREMENT,
conversation_id INTEGER,
code_content TEXT,
execution_result TEXT,
error_message TEXT,
retry_count INTEGER,
timestamp DATETIME,
FOREIGN KEY(conversation_id) REFERENCES conversations(id))''')
conn.commit()
conn.close()
debugModule.log("database initialized successfully!")
def save_conversation(query, response, links):
conn = sqlite3.connect(Config.CONVERSATION_DB_PATH)
c = conn.cursor()
c.execute('''INSERT INTO conversations
(query, response, links, timestamp)
VALUES (?, ?, ?, ?)''',
(query, response, ", ".join(links), datetime.now()))
conn.commit()
conn.close()
return c.lastrowid # Return the generated conversation ID because it's easier than uuids
def save_code_execution(code, result, error=None, retries=0, conversation_id=None):
conn = sqlite3.connect(Config.CONVERSATION_DB_PATH)
c = conn.cursor()
# Convert execution result to string if needed
if isinstance(result, dict):
execution_result = str(result.get('err', ''))
error_message = result.get('err', '')
else:
execution_result = str(result)
error_message = error or ''
c.execute('''INSERT INTO code_executions
(conversation_id, code_content, execution_result,
error_message, retry_count, timestamp)
VALUES (?, ?, ?, ?, ?, ?)''',
(conversation_id, code, execution_result,
2025-04-02 21:56:41 -04:00
error_message, retries, datetime.now()))
2025-04-01 22:29:59 -04:00
conn.commit()
conn.close()
def save_conversation(query, response, links):
if len(query) > Config.MAX_QUERY_LENGTH or len(response) > Config.MAX_RESPONSE_LENGTH:
raise ValueError("Input too large")
conn = sqlite3.connect(Config.CONVERSATION_DB_PATH)
cursor = conn.cursor()
links_str = ", ".join(links) if links else ""
cursor.execute(
"INSERT INTO conversations (query, response, links) VALUES (?, ?, ?)",
(query, response, links_str)
)
conn.commit()
conn.close()