import os import mysql.connector from datetime import datetime # === DB Credentials === DB_HOST = os.getenv("DB_HOST", "localhost") DB_PORT = int(os.getenv("DB_PORT", 3306)) DB_USER = os.getenv("DB_USER", "emailuser") DB_PASSWORD = os.getenv("DB_PASSWORD", "miguel33020") DB_NAME = os.getenv("DB_NAME", "emailassistant") # === Connect to DB === conn = mysql.connector.connect( host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, database=DB_NAME ) cursor = conn.cursor() # === Logging Helper === def log_event(cursor, level, source, message): cursor.execute( "INSERT INTO logs (level, source, message, timestamp) VALUES (%s, %s, %s, %s)", (level, source, message, datetime.now()) ) # === Migration Commands === migration_commands = [ "ALTER TABLE emails ADD COLUMN IF NOT EXISTS ai_keywords TEXT;", "ALTER TABLE emails ADD COLUMN IF NOT EXISTS ai_label_source VARCHAR(100);", "ALTER TABLE emails ADD COLUMN IF NOT EXISTS summary_source VARCHAR(100);", "ALTER TABLE emails ADD COLUMN IF NOT EXISTS ai_model_version VARCHAR(100);", "ALTER TABLE emails ADD COLUMN IF NOT EXISTS is_ai_reviewed BOOLEAN DEFAULT FALSE;", "ALTER TABLE emails ADD COLUMN IF NOT EXISTS processing_notes TEXT;", ] # === Apply Migrations === print("🚀 Starting migrations...") for cmd in migration_commands: try: cursor.execute(cmd) log_event(cursor, "INFO", "migrations", f"Executed: {cmd}") print(f"✅ Executed: {cmd}") except mysql.connector.Error as err: log_event(cursor, "WARNING", "migrations", f"Skipped or failed: {cmd} -> {err}") print(f"⚠️ Skipped or failed: {cmd} -> {err}") # === Commit & Close === conn.commit() cursor.close() conn.close() print("✅ Migration complete.")