Coverage for src / local_deep_research / database / models / queue.py: 100%
27 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
1"""
2Queue-related database models stored in each user's encrypted database.
3"""
5from sqlalchemy import Column, Integer, String, JSON
6from sqlalchemy_utc import UtcDateTime, utcnow
8from .base import Base
11class QueueStatus(Base):
12 """Track queue status for this user."""
14 __tablename__ = "queue_status"
16 id = Column(Integer, primary_key=True)
17 active_tasks = Column(Integer, default=0)
18 queued_tasks = Column(Integer, default=0)
19 last_checked = Column(UtcDateTime, default=utcnow())
20 last_task_id = Column(String, nullable=True)
21 updated_at = Column(UtcDateTime, default=utcnow(), onupdate=utcnow())
24class TaskMetadata(Base):
25 """Store task metadata for background processing."""
27 __tablename__ = "task_metadata"
29 task_id = Column(String, primary_key=True)
30 status = Column(
31 String, nullable=False
32 ) # queued, processing, completed, failed
33 task_type = Column(String, nullable=False) # research, benchmark, etc
34 created_at = Column(UtcDateTime, default=utcnow())
35 started_at = Column(UtcDateTime, nullable=True)
36 completed_at = Column(UtcDateTime, nullable=True)
37 error_message = Column(String, nullable=True)
39 # Additional fields for task details
40 priority = Column(Integer, default=0) # Higher number = higher priority
41 retry_count = Column(Integer, default=0)
42 max_retries = Column(Integer, default=3)
44 # Progress tracking for long-running tasks
45 progress_current = Column(Integer, default=0)
46 progress_total = Column(Integer, default=0)
47 progress_message = Column(String, nullable=True)
48 metadata_json = Column(
49 JSON, nullable=True
50 ) # Store task-specific data (e.g., collection_id)