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

1""" 

2Queue-related database models stored in each user's encrypted database. 

3""" 

4 

5from sqlalchemy import Column, Integer, String, JSON 

6from sqlalchemy_utc import UtcDateTime, utcnow 

7 

8from .base import Base 

9 

10 

11class QueueStatus(Base): 

12 """Track queue status for this user.""" 

13 

14 __tablename__ = "queue_status" 

15 

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()) 

22 

23 

24class TaskMetadata(Base): 

25 """Store task metadata for background processing.""" 

26 

27 __tablename__ = "task_metadata" 

28 

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) 

38 

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) 

43 

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)