Spaces:
Running
Running
| """Response schemas for API endpoints. Pure Pydantic models (no table).""" | |
| import uuid | |
| from datetime import datetime | |
| from typing import Optional | |
| from sqlmodel import Field, SQLModel | |
| class MangaOut(SQLModel): | |
| """Umbrella manga list response.""" | |
| id: Optional[int] = None | |
| manga_title: str | |
| created_at: Optional[datetime] = None | |
| updated_at: Optional[datetime] = None | |
| class ChapterListOut(SQLModel): | |
| """Chapter list response (includes manga_title, provider_id from chapter).""" | |
| manga_title: str | |
| provider_id: str | |
| id: int | |
| chapter_number: float | |
| created_at: Optional[datetime] = None | |
| updated_at: Optional[datetime] = None | |
| class ReadingListCollectionOut(SQLModel): | |
| """A named reading list owned by the user.""" | |
| id: int | |
| name: str | |
| manga_count: int = 0 | |
| created_at: Optional[datetime] = None | |
| updated_at: Optional[datetime] = None | |
| #: MangaDex id of the most recently *added* list item (for cover thumbnails). | |
| latest_external_manga_id: Optional[str] = None | |
| class ReadingListCollectionCreateIn(SQLModel): | |
| name: str | |
| class ReadingListCollectionRenameIn(SQLModel): | |
| name: str | |
| class UserDisplayNamePatchIn(SQLModel): | |
| """Display name stored in public.users and mirrored from Supabase Auth user_metadata.""" | |
| display_name: str = Field(default="", max_length=200) | |
| class ReadingListItemOut(SQLModel): | |
| """One manga row inside a named list (with umbrella title + optional MangaDex id).""" | |
| id: int | |
| reading_list_id: int | |
| manga_id: int | |
| manga_title: str | |
| external_manga_id: Optional[str] = None | |
| last_chapter_number: Optional[float] = None | |
| updated_at: Optional[datetime] = None | |
| class ReadingListAddIn(SQLModel): | |
| """Add a title by provider catalog id (e.g. MangaDex UUID).""" | |
| provider_id: str = Field(default="mangadex") | |
| external_manga_id: str | |
| manga_title: str | |
| last_chapter_number: Optional[float] = None | |
| class SegmentListOut(SQLModel): | |
| """Segment list response (join of Segments + Pages + Chapters + Manga).""" | |
| id: int | |
| provider_id: str | |
| manga_title: str | |
| chapter_number: float | |
| page_number: int | |
| segment_index: int | |
| x1: float | |
| y1: float | |
| x2: float | |
| y2: float | |
| original_text: str | |
| translated_text: str | |
| language_code: str | |
| created_at: Optional[datetime] = None | |