from datetime import datetime from typing import Optional, Dict, Any, List from pydantic import BaseModel class ScrapeResultBase(BaseModel): """ Base schema for scrape result data. """ job_id: int content_type: Optional[str] = None headers: Optional[Dict[str, Any]] = None extracted_data: Optional[Dict[str, Any]] = None class ScrapeResultCreate(ScrapeResultBase): """ Schema for creating a new scrape result. """ html_content: Optional[str] = None class ScrapeResultUpdate(BaseModel): """ Schema for updating a scrape result. """ content_type: Optional[str] = None headers: Optional[Dict[str, Any]] = None html_content: Optional[str] = None extracted_data: Optional[Dict[str, Any]] = None class ScrapeResultInDBBase(ScrapeResultBase): """ Base schema for scrape result in database. """ id: int created_at: datetime html_content: Optional[str] = None class Config: orm_mode = True class ScrapeResult(ScrapeResultInDBBase): """ Schema for returned scrape result. """ pass class ScrapeResultList(BaseModel): """ Schema for a list of scrape results. """ results: List[ScrapeResult] total: int