from pydantic import BaseModel from sqlmodel import Field, SQLModel from sqlalchemy import Column, JSON # Token models class Token(BaseModel): access_token: str token_type: str class TokenData(BaseModel): username: str | None = None # Task models class Task(BaseModel): title: str description: str | None = None is_completed: bool = False # User models class UserBase(SQLModel): name: str email: str = Field(index=True) username: str class User(UserBase, table=True): id: int = Field(default=None, primary_key=True, index=True) is_active: bool = True username: str = Field(index=True, unique=True) password: str salt: int tasks: list[Task] | None = Field(default=None, sa_column=Column(JSON)) class UserPublic(UserBase): id: int is_active: bool tasks: list[Task] | None = Field(default=None, sa_column=Column(JSON)) class UserCreate(UserBase): password: str salt: int | None = Field(default=0) is_active: bool = True class UserUpdate(SQLModel): name: str | None = None email: str | None = None password: str | None = None tasks: list[Task] | None = None class VerifyUser(BaseModel): email: str password: str