Spaces:
Running
Running
| # code/database.py | |
| import sqlite3 | |
| from contextlib import contextmanager | |
| # हम constants फाइल से पाथ और लॉक इम्पोर्ट कर रहे हैं | |
| from core.constants import DATABASE_FILE, GLOBAL_DB_LOCK | |
| def get_db_cursor(): | |
| conn = sqlite3.connect(DATABASE_FILE, check_same_thread=False) | |
| conn.row_factory = sqlite3.Row | |
| try: | |
| yield conn | |
| conn.commit() | |
| except Exception as e: | |
| conn.rollback() | |
| raise e | |
| finally: | |
| conn.close() | |
| def init_db(): | |
| with GLOBAL_DB_LOCK: | |
| with get_db_cursor() as conn: | |
| conn.execute('CREATE TABLE IF NOT EXISTS tasks (id TEXT PRIMARY KEY, status TEXT NOT NULL, progress INTEGER NOT NULL, log TEXT, output_filename TEXT)') | |
| def create_task(task_id): | |
| log_message = "मिशन शुरू हो रहा...\n" | |
| with GLOBAL_DB_LOCK: | |
| with get_db_cursor() as conn: | |
| conn.execute('INSERT INTO tasks (id, status, progress, log) VALUES (?, ?, ?, ?)', (task_id, 'processing', 0, log_message)) | |
| def get_task(task_id): | |
| with GLOBAL_DB_LOCK: | |
| with get_db_cursor() as conn: | |
| return conn.execute('SELECT * FROM tasks WHERE id = ?', (task_id,)).fetchone() | |
| def update_task_log(task_id, message, progress): | |
| with GLOBAL_DB_LOCK: | |
| with get_db_cursor() as conn: | |
| # First fetch current log | |
| current_row = conn.execute('SELECT log FROM tasks WHERE id = ?', (task_id,)).fetchone() | |
| if not current_row: return # Task not found | |
| current_log = current_row['log'] | |
| new_log = current_log + message + "\n" | |
| conn.execute('UPDATE tasks SET log = ?, progress = ? WHERE id = ?', (new_log, progress, task_id)) | |
| def update_task_final_status(task_id, status, error_message=None, output_filename=None): | |
| with GLOBAL_DB_LOCK: | |
| with get_db_cursor() as conn: | |
| current_row = conn.execute('SELECT log FROM tasks WHERE id = ?', (task_id,)).fetchone() | |
| if not current_row: return | |
| current_log = current_row['log'] | |
| if status == 'error': | |
| final_log = current_log + f"\n\n🚨 FATAL ERROR: {error_message}" | |
| conn.execute('UPDATE tasks SET status = ?, log = ? WHERE id = ?', (status, final_log, task_id)) | |
| elif status == 'complete': | |
| final_log = current_log + "\n🎉 मिशन पूरा हुआ!" | |
| conn.execute('UPDATE tasks SET status = ?, progress = ?, output_filename = ?, log = ? WHERE id = ?', (status, 100, output_filename, final_log, task_id)) | |