Surya8663
Final version, database correctly ignored
4ded330
# backend/database.py (ROBUST VERSION)
import sqlite3
from datetime import datetime
DB_NAME = "email_sorter.db"
def init_db():
"""Initializes the database using a context manager for safety."""
with sqlite3.connect(DB_NAME) as conn:
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS emails (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT NOT NULL,
email_from TEXT,
subject TEXT,
body TEXT,
predicted_folder TEXT,
confidence REAL,
user_feedback TEXT
)
''')
print("Database initialized successfully.")
def add_email_records(records_df):
"""Adds multiple email records from a pandas DataFrame using a context manager."""
with sqlite3.connect(DB_NAME) as conn:
records_df['timestamp'] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
records_df['user_feedback'] = None
df_to_save = records_df.rename(columns={
'From': 'email_from',
'Subject': 'subject',
'Body': 'body'
})
db_columns = ['timestamp', 'email_from', 'subject', 'body', 'predicted_folder', 'confidence', 'user_feedback']
df_to_save = df_to_save[[col for col in db_columns if col in df_to_save.columns]]
df_to_save.to_sql('emails', conn, if_exists='append', index=False)
def get_all_emails():
"""Fetches all email records using a context manager."""
with sqlite3.connect(DB_NAME) as conn:
cursor = conn.cursor()
cursor.execute("SELECT id, timestamp, email_from, subject, predicted_folder, confidence, user_feedback FROM emails ORDER BY timestamp DESC")
records = cursor.fetchall()
columns = [description[0] for description in cursor.description]
return records, columns
def update_feedback(record_id, corrected_label):
"""Updates the user_feedback for a specific record using a context manager."""
with sqlite3.connect(DB_NAME) as conn:
cursor = conn.cursor()
cursor.execute("UPDATE emails SET user_feedback = ? WHERE id = ?", (corrected_label, record_id))
print(f"Updated record ID {record_id} with feedback: {corrected_label}")