webscrapercli-wbi8nl/app/crud/scrape_result.py

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)