from typing import List, Optional from sqlalchemy.orm import Session from app.models.scrape_result import ScrapeResult from app.schemas.scrape_result import ScrapeResultCreate, ScrapeResultUpdate from app.crud.base import CRUDBase class CRUDScrapeResult(CRUDBase[ScrapeResult, ScrapeResultCreate, ScrapeResultUpdate]): """ CRUD operations for ScrapeResult model. """ def get_by_job_id(self, db: Session, *, job_id: int) -> List[ScrapeResult]: """ Get results by job ID. """ return db.query(self.model).filter(self.model.job_id == job_id).all() def get_latest_by_job_id( self, db: Session, *, job_id: int ) -> Optional[ScrapeResult]: """ Get the latest result by job ID. """ return ( db.query(self.model) .filter(self.model.job_id == job_id) .order_by(self.model.created_at.desc()) .first() ) scrape_result = CRUDScrapeResult(ScrapeResult)