import sqlite3 from datetime import datetime, timedelta DB_NAME = 'my_data.db' def get_db_conn(): conn = sqlite3.connect(DB_NAME) return conn def create_tables(): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS jobs ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, folder1 TEXT NOT NULL, folder2 TEXT NOT NULL, interval INTEGER NOT NULL )''') cursor.execute('''CREATE TABLE IF NOT EXISTS logs ( id INTEGER PRIMARY KEY, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, message TEXT NOT NULL )''') conn.commit() conn.close() def add_job_to_db(name, folder1, folder2, interval): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute('INSERT INTO jobs (name, folder1, folder2, interval) VALUES (?, ?, ?, ?)', (name, folder1, folder2, interval)) conn.commit() conn.close() def get_jobs_from_db(): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute('SELECT * FROM jobs') jobs = cursor.fetchall() conn.close() return [{'name': job[1], 'folder1': job[2], 'folder2': job[3], 'interval': job[4]} for job in jobs] def update_job_in_db(old_name, new_name, folder1, folder2, interval): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute(''' UPDATE jobs SET name = ?, folder1 = ?, folder2 = ?, interval = ? WHERE name = ? ''', (new_name, folder1, folder2, interval, old_name)) if old_name != new_name: cursor.execute(f'ALTER TABLE {old_name} RENAME TO {new_name};') conn.commit() conn.close() def delete_job_from_db(name): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute('DELETE FROM jobs WHERE name = ?', (name,)) cursor.execute(f"DROP TABLE IF EXISTS {name}") conn.commit() conn.close() def add_log_to_db(message): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() cursor.execute('INSERT INTO logs (message) VALUES (?)', (message,)) conn.commit() conn.close() def get_logs_from_db(): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() # cursor.execute('SELECT * FROM logs') cursor.execute(''' SELECT * FROM logs ORDER BY timestamp DESC LIMIT 30 ''') logs = cursor.fetchall() conn.close() return [(log[1], log[2]) for log in logs] def delete_old_logs(): conn = sqlite3.connect(DB_NAME) cursor = conn.cursor() one_month_ago = datetime.now() - timedelta(days=30) cursor.execute('DELETE FROM logs WHERE timestamp < ?', (one_month_ago,)) conn.commit() conn.close()