from typing import List from sqlalchemy.orm import Session from app.models.scrape_job import ScrapeJob, JobStatus from app.schemas.scrape_job import ScrapeJobCreate, ScrapeJobUpdate from app.crud.base import CRUDBase class CRUDScrapeJob(CRUDBase[ScrapeJob, ScrapeJobCreate, ScrapeJobUpdate]): """ CRUD operations for ScrapeJob model. """ def get_by_status( self, db: Session, *, status: JobStatus, skip: int = 0, limit: int = 100 ) -> List[ScrapeJob]: """ Get jobs by status. """ return ( db.query(self.model) .filter(self.model.status == status) .offset(skip) .limit(limit) .all() ) def count_by_status(self, db: Session, *, status: JobStatus) -> int: """ Count jobs by status. """ return db.query(self.model).filter(self.model.status == status).count() def get_pending_jobs(self, db: Session, *, limit: int = 10) -> List[ScrapeJob]: """ Get pending jobs. """ return ( db.query(self.model) .filter(self.model.status == JobStatus.PENDING) .limit(limit) .all() ) scrape_job = CRUDScrapeJob(ScrapeJob)