| import logging |
| from typing import Optional, List |
| from .supabase_service import supabase |
|
|
| logger = logging.getLogger(__name__) |
|
|
| class TaskQueueService: |
| @staticmethod |
| async def queue_task(task_id: str): |
| """ |
| Marks a task as 'queued' in the database. |
| """ |
| try: |
| result = supabase.table("tasks").update({"status": "queued"}).eq("id", task_id).execute() |
| return result |
| except Exception as e: |
| logger.error(f"Error queueing task {task_id}: {e}") |
| return None |
|
|
| @staticmethod |
| async def get_next_queued_task(): |
| """ |
| Fetches the next available task from the queue. |
| """ |
| try: |
| |
| result = supabase.table("tasks") \ |
| .select("*") \ |
| .eq("status", "queued") \ |
| .order("priority", desc=True) \ |
| .order("created_at") \ |
| .limit(1) \ |
| .execute() |
| |
| if result.data: |
| return result.data[0] |
| return None |
| except Exception as e: |
| logger.error(f"Error fetching next queued task: {e}") |
| return None |
|
|
| @staticmethod |
| async def mark_in_progress(task_id: str): |
| """ |
| Marks a task as 'in_progress'. |
| """ |
| return supabase.table("tasks").update({"status": "in_progress"}).eq("id", task_id).execute() |
|
|