from pydantic import BaseModel, Field, computed_field class AnimeCreate(BaseModel): anilist_id: int = Field(gt=0) custom_name: str | None = Field(default=None, max_length=255) class AnimeRemove(BaseModel): anilist_id: int class AnimeEntry(BaseModel): name: str last_updated: str | None = None class Counts(BaseModel): active: int inactive: int class AnimeList(BaseModel): active: list[AnimeEntry] = Field(default_factory=list) inactive: list[AnimeEntry] = Field(default_factory=list) @computed_field @property def counts(self) -> Counts: return Counts(active=len(self.active),inactive=len(self.inactive))