import sqlite3 from config import DB_PATH def get_connection(): return sqlite3.connect(DB_PATH) def create_npc_table(table_name): conn = get_connection() conn.execute(f''' CREATE TABLE IF NOT EXISTS {table_name} ( id INTEGER PRIMARY KEY AUTOINCREMENT, role TEXT, message TEXT, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP ) ''') conn.commit() conn.close() def store_message(table_name, role, message): conn = get_connection() conn.execute( f"INSERT INTO {table_name} (role, message) VALUES (?, ?)", (role, message) ) conn.commit() conn.close() #Retrieves last N exchanges (N*2 rows since each exchange is player + npc). Reversed so oldest is first. def get_recent_history(table_name, n = 3): conn = get_connection() rows = conn.execute( f"SELECT role, message FROM {table_name} ORDER BY id DESC LIMIT ?", (n *2,) ).fetchall() conn.close() return list(reversed(rows)) #counts how many times the player has spoken to this NPC. def get_message_count(table_name): conn = get_connection() count = conn.execute( f"SELECT COUNT(*) FROM {table_name} WHERE role = ?", ("player",) ).fetchone()[0] conn.close() return count #clear table def clear_table(table_name): conn = get_connection() conn.execute( f"DELETE FROM {table_name}" ) conn.commit() conn.close()