quantum1fusion8 / memory_utils.py
IamSatoshiAI's picture
Update memory_utils.py
145d6f2 verified
import sqlite3
from datetime import datetime
from cryptography.fernet import Fernet
import os
# Inicijalizacija baze i enkripcije
def init_db():
"""Inicijalizira SQLite bazu podataka"""
conn = sqlite3.connect('memory.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS chat_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT,
user_input TEXT,
bot_response TEXT,
backend_mode TEXT
)
''')
conn.commit()
conn.close()
# Generiraj ili učitaj enkripcijski ključ
def load_key():
key_path = "secrets/encryption_key.bin"
if not os.path.exists(key_path):
os.makedirs("secrets", exist_ok=True)
key = Fernet.generate_key()
with open(key_path, "wb") as key_file:
key_file.write(key)
return open(key_path, "rb").read()
key = load_key()
cipher = Fernet(key)
def encrypt_data(data):
"""Šifriraj podatke prije pohrane"""
return cipher.encrypt(data.encode()).decode()
def decrypt_data(encrypted_data):
"""Dešifriraj podatke prije korištenja"""
return cipher.decrypt(encrypted_data.encode()).decode()
def get_history(limit=1000):
"""Dohvati povijest razgovora iz baze"""
conn = sqlite3.connect('memory.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM chat_history ORDER BY id DESC LIMIT ?", (limit,))
history = cursor.fetchall()
conn.close()
return history
def save_to_db(user_input, bot_response, mode):
"""Spremi razgovor u bazu"""
conn = sqlite3.connect('memory.db')
cursor = conn.cursor()
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
cursor.execute(
"INSERT INTO chat_history (timestamp, user_input, bot_response, backend_mode) VALUES (?, ?, ?, ?)",
(timestamp, encrypt_data(user_input), encrypt_data(bot_response), mode)
)
conn.commit()
conn.close()
# Inicijaliziraj bazu pri uvođenju modula
init_db()