50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
from typing import Annotated
|
|
|
|
from pydantic import BaseModel, BeforeValidator, ConfigDict, EmailStr
|
|
|
|
from src.schemas.tasks import TaskWithId
|
|
from src.schemas.validators import ensure_password, ensure_username
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
email: EmailStr | None = None
|
|
username: str | None = None
|
|
is_active: bool | None = None
|
|
model_config = ConfigDict(from_attributes=True, extra="ignore")
|
|
|
|
|
|
class User(BaseModel):
|
|
id: int
|
|
email: EmailStr | None
|
|
username: str
|
|
is_active: bool
|
|
is_superuser: bool
|
|
telegram_id: int | None
|
|
avatar_path: str | None
|
|
model_config = ConfigDict(from_attributes=True, extra="ignore")
|
|
|
|
|
|
class UserWithHashedPass(User):
|
|
hashed_password: str
|
|
|
|
|
|
class UserWithTasks(User):
|
|
tasks: list[TaskWithId]
|
|
|
|
|
|
class UserRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class UserRequestADD(BaseModel):
|
|
username: Annotated[str, BeforeValidator(ensure_username)]
|
|
email: EmailStr | None = None
|
|
password: Annotated[str, BeforeValidator(ensure_password)]
|
|
|
|
|
|
class UserAdd(BaseModel):
|
|
email: EmailStr | None
|
|
username: str
|
|
hashed_password: str
|