task-api/tables.py
2025-04-18 20:24:23 -04:00

57 lines
1.3 KiB
Python

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 | None = Field(default=False)
class UpdateTask(BaseModel):
title: str | None = None
description: str | None = None
is_completed: bool | None = Field(default=None)
# 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
username: str | None = None
is_active: bool | None = None
class VerifyUser(BaseModel):
email: str
password: str