36 lines
999 B
Python
36 lines
999 B
Python
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)
|