from typing import Optional, List from datetime import date from pydantic import BaseModel, Field from app.schemas.genre import Genre class AnimeBase(BaseModel): title: str alternative_titles: Optional[str] = None synopsis: Optional[str] = None episodes: Optional[int] = None status: Optional[str] = None aired_from: Optional[date] = None aired_to: Optional[date] = None duration: Optional[str] = None rating: Optional[str] = None score: Optional[float] = Field(None, ge=0, le=10) ranked: Optional[int] = None popularity: Optional[int] = None studio: Optional[str] = None source: Optional[str] = None image_url: Optional[str] = None class AnimeCreate(AnimeBase): genre_ids: Optional[List[int]] = [] class AnimeUpdate(AnimeBase): title: Optional[str] = None genre_ids: Optional[List[int]] = None class Anime(AnimeBase): id: int genres: Optional[List[Genre]] = [] class Config: from_attributes = True class AnimeSearchResults(BaseModel): results: List[Anime] total: int page: int size: int