Spaces:
Running
Running
| from sqlmodel import SQLModel, Field, TIMESTAMP, text | |
| from sqlalchemy import Column | |
| from sqlalchemy.dialects.postgresql import JSONB | |
| from datetime import datetime, timezone | |
| class Animes(SQLModel, table=True): | |
| id: int | None = Field(default=None, primary_key=True) | |
| mal_id: int = Field(index=True, unique=True) | |
| url: str | None = Field(default=None) | |
| title: str = Field(index=True) | |
| title_english: str | None = Field(default=None) | |
| searchable_text: str | None = Field(default=None) | |
| synopsis: str | None = Field(default=None) | |
| # Store nested JSON | |
| images: dict = Field(sa_column=Column(JSONB)) | |
| # Arrays → Postgres ARRAY or JSON | |
| genres: list[str] = Field(sa_column=Column(JSONB)) | |
| studios: list[str] = Field(sa_column=Column(JSONB)) | |
| themes: list[str] = Field(sa_column=Column(JSONB)) | |
| demographics: list[str] = Field(sa_column=Column(JSONB)) | |
| type: str | None = None | |
| episodes: int | None = None | |
| score: float | None = Field(default=None, index=True) | |
| scored_by: int | None = None | |
| rank: int | None = Field(default=None, index=True) | |
| popularity: int | None = None | |
| year: int | None = Field(default=None, index=True) | |
| season: str | None = None | |
| rating: str | None = None | |
| aired_from: str | None = None | |
| aired_to: str | None = None | |
| favorites: int | None = None | |
| class User(SQLModel, table=True): | |
| id: int | None = Field(default=None, primary_key=True) | |
| email: str = Field(unique=True, index=True) | |
| hashed_password: str | |
| created_at: datetime | None = Field(sa_column=Column(TIMESTAMP(timezone=True), | |
| nullable=True, | |
| server_default=text("NOW()"))) | |
| is_active: bool = Field(default=True) | |