task-api/tables.py
2025-04-28 21:23:35 -04:00

67 lines
1.6 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
expires_days: int
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)
task_id: int | None = None
class UpdateTask(BaseModel):
title: str | None = None
description: str | None = None
is_completed: bool | None = Field(default=None)
task_id: int | None = None
class DeleteTask(BaseModel):
task_id: int
# 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(BaseModel):
id: int | None = None
name: str | None = None
email: str | None = None
username: str | None = None
is_active: bool | None = None
tasks: list[Task] | None = Field(default=None, sa_column=Column(JSON))
detail : str | None = None
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):
username: str
password: str