Files
algorithm/backend/app/schemas/user.py
2026-02-08 14:42:58 +08:00

84 lines
2.0 KiB
Python

from pydantic import BaseModel, Field, EmailStr
from typing import Optional, List
from datetime import datetime
class UserBase(BaseModel):
"""用户基础模式"""
id: Optional[str] = None
username: str = Field(..., description="用户名")
email: EmailStr = Field(..., description="邮箱")
role: str = Field(default="user", description="用户角色")
class UserCreate(UserBase):
"""创建用户模式"""
password: str = Field(..., description="密码")
class UserUpdate(BaseModel):
"""更新用户模式"""
username: Optional[str] = None
email: Optional[EmailStr] = None
role: Optional[str] = None
status: Optional[str] = None
password: Optional[str] = None
class UserResponse(UserBase):
"""用户响应模式"""
status: str
created_at: datetime
updated_at: Optional[datetime] = 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="密码")
class APIKeyBase(BaseModel):
"""API密钥基础模式"""
id: Optional[str] = None
user_id: str = Field(..., description="用户ID")
name: str = Field(..., description="密钥名称")
class APIKeyCreate(APIKeyBase):
"""创建API密钥模式"""
expires_at: datetime = Field(..., description="过期时间")
class APIKeyResponse(APIKeyBase):
"""API密钥响应模式"""
key: str
expires_at: datetime
status: str
created_at: datetime
updated_at: Optional[datetime] = None
class APIKeyListResponse(BaseModel):
"""API密钥列表响应模式"""
api_keys: List[APIKeyResponse]
total: int