
- Create project structure and dependencies - Set up SQLAlchemy models for anime, genres, and their relationships - Implement CRUD operations for all models - Set up FastAPI endpoints for managing anime and genres - Add health check endpoint - Configure Alembic for database migrations - Add data seeding capability - Update README with project information
46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
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 |