Automated Action bf28ab6f8e Enhance Anime Information API with Advanced Features
- Add proper model relationships for better querying
- Implement character model and endpoints for managing anime characters
- Add advanced filtering options (year, score range, source, studio, etc.)
- Add statistics endpoint for analyzing anime collection
- Include pagination metadata for easier navigation
- Create Alembic migration for the new character model
- Update README with new features and documentation
2025-05-17 21:58:44 +00:00

58 lines
1.3 KiB
Python

from typing import Optional, List, TYPE_CHECKING, ForwardRef
from datetime import date
from pydantic import BaseModel, Field
from app.schemas.genre import Genre
if TYPE_CHECKING:
from app.schemas.character import Character
else:
Character = ForwardRef("Character")
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 AnimeWithCharacters(Anime):
characters: Optional[List[Character]] = []
class Config:
from_attributes = True
class AnimeSearchResults(BaseModel):
results: List[Anime]
total: int
page: int
size: int