61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional, Dict
|
|
|
|
from pydantic import EmailStr, Field, TypeAdapter
|
|
|
|
from api.db.tables.account import AccountRole, AccountStatus
|
|
from api.schemas.base import Base
|
|
|
|
|
|
class UserUpdate(Base):
|
|
name: Optional[str] = Field(None, max_length=100)
|
|
login: Optional[str] = Field(None, max_length=100)
|
|
email: Optional[EmailStr] = None
|
|
password: Optional[str] = None
|
|
bind_tenant_id: Optional[str] = Field(None, max_length=40)
|
|
role: Optional[AccountRole] = None
|
|
meta: Optional[dict] = None
|
|
status: Optional[AccountStatus] = None
|
|
|
|
|
|
class UserCreate(Base):
|
|
name: str = Field(max_length=100)
|
|
login: str = Field(max_length=100)
|
|
email: Optional[EmailStr] = None
|
|
password: Optional[str] = None
|
|
bind_tenant_id: Optional[str] = Field(None, max_length=40)
|
|
role: AccountRole
|
|
meta: Optional[dict] = None
|
|
status: AccountStatus
|
|
|
|
|
|
class AllUser(Base):
|
|
id: int
|
|
name: str
|
|
login: str
|
|
email: Optional[EmailStr] = None
|
|
bind_tenant_id: Optional[str] = None
|
|
role: AccountRole
|
|
meta: Optional[dict] = None
|
|
creator_id: Optional[int] = None
|
|
created_at: datetime
|
|
status: AccountStatus
|
|
|
|
|
|
class AllUserResponse(Base):
|
|
users: List[AllUser]
|
|
amount_count: int
|
|
amount_pages: int
|
|
current_page: int
|
|
limit: int
|
|
|
|
|
|
all_user_adapter = TypeAdapter(List[AllUser])
|
|
|
|
|
|
class UserFilterDTO(Base):
|
|
pagination: Dict[str, int]
|
|
search: Optional[str] = None
|
|
order: Optional[Dict[str, str]] = None
|
|
filters: Optional[Dict[str, List[str]]] = None
|