Files
ALwrity/backend/services/scheduler/utils/deep_website_crawl_task_loader.py

34 lines
950 B
Python

from typing import List
from datetime import datetime
from sqlalchemy.orm import Session
from sqlalchemy import or_
from models.website_analysis_monitoring_models import DeepWebsiteCrawlTask
def load_due_deep_website_crawl_tasks(db: Session, user_id: str = None) -> List[DeepWebsiteCrawlTask]:
"""
Load due deep website crawl tasks.
Args:
db: Database session
user_id: Optional user_id to filter tasks
Returns:
List of due tasks
"""
query = db.query(DeepWebsiteCrawlTask).filter(
or_(
DeepWebsiteCrawlTask.status == 'active',
DeepWebsiteCrawlTask.status == 'retry'
),
or_(
DeepWebsiteCrawlTask.next_execution <= datetime.utcnow(),
DeepWebsiteCrawlTask.next_execution == None
)
)
if user_id:
query = query.filter(DeepWebsiteCrawlTask.user_id == user_id)
return query.all()