51 lines
1.1 KiB
Python
51 lines
1.1 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 = 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 |