80 lines
1.8 KiB
Python
80 lines
1.8 KiB
Python
from pydantic import BaseModel, Field, EmailStr
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
|
|
|
|
class RoleBase(BaseModel):
|
|
"""角色基础模式"""
|
|
id: Optional[str] = None
|
|
name: str = Field(..., description="角色名称")
|
|
description: str = Field(default="", description="角色描述")
|
|
|
|
|
|
class RoleCreate(RoleBase):
|
|
"""创建角色模式"""
|
|
pass
|
|
|
|
|
|
class RoleResponse(RoleBase):
|
|
"""角色响应模式"""
|
|
created_at: datetime
|
|
updated_at: Optional[datetime] = None
|
|
|
|
|
|
class UserBase(BaseModel):
|
|
"""用户基础模式"""
|
|
id: Optional[str] = None
|
|
username: str = Field(..., description="用户名")
|
|
email: EmailStr = Field(..., description="邮箱")
|
|
role_id: str = Field(..., description="角色ID")
|
|
|
|
|
|
class UserCreate(UserBase):
|
|
"""创建用户模式"""
|
|
password: str = Field(..., description="密码")
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
"""更新用户模式"""
|
|
username: Optional[str] = None
|
|
email: Optional[EmailStr] = None
|
|
role_id: Optional[str] = None
|
|
status: Optional[str] = None
|
|
password: Optional[str] = None
|
|
|
|
|
|
class UserResponse(UserBase):
|
|
"""用户响应模式"""
|
|
status: str
|
|
created_at: datetime
|
|
updated_at: Optional[datetime] = None
|
|
role: Optional[RoleResponse] = None
|
|
role_name: Optional[str] = None
|
|
|
|
|
|
class UserListResponse(BaseModel):
|
|
"""用户列表响应模式"""
|
|
users: List[UserResponse]
|
|
total: int
|
|
|
|
|
|
class Token(BaseModel):
|
|
"""令牌模式"""
|
|
access_token: str
|
|
token_type: str = "bearer"
|
|
|
|
|
|
class TokenData(BaseModel):
|
|
"""令牌数据模式"""
|
|
username: Optional[str] = None
|
|
user_id: Optional[str] = None
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
"""登录请求模式"""
|
|
username: str = Field(..., description="用户名")
|
|
password: str = Field(..., description="密码")
|
|
|
|
|
|
|