- Redis DB0~DB15 下拉选择,默认DB0 - 查询历史粘贴按钮(一键填入SQL编辑器) - 去掉导出历史按钮 - SchemaSidebar 按目标数据库筛选 - SQL自动补全 schema 双层注册(db→tables, table→columns) - 后端 db-schema 接口(INFORMATION_SCHEMA.COLUMNS 一次加载) - autocompletion 扩展激活 - Redis key 树形结构(冒号分隔层级) - Redis 查询模板 GET/HGETALL/HGET - guest 角色彻底移除,改为 auditor - 登录页优化:去掉演示账号、placeholder 中文提示
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
from datetime import datetime
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
from typing import Optional
|
|
|
|
|
|
class UserCreate(BaseModel):
|
|
username: str = Field(..., min_length=2, max_length=50)
|
|
display_name: str = Field(..., min_length=1, max_length=100)
|
|
password: str = Field(..., min_length=6)
|
|
email: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
role: str = Field(default="developer", pattern="^(admin|dba|developer|auditor)$")
|
|
|
|
|
|
class UserUpdate(BaseModel):
|
|
display_name: Optional[str] = None
|
|
email: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
role: Optional[str] = Field(default=None, pattern="^(admin|dba|developer|auditor)$")
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
class UserResponse(BaseModel):
|
|
id: int
|
|
username: str
|
|
display_name: str
|
|
email: Optional[str] = None
|
|
phone: Optional[str] = None
|
|
role: str
|
|
is_active: bool
|
|
last_login: Optional[datetime] = None
|
|
created_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class PasswordChange(BaseModel):
|
|
old_password: str
|
|
new_password: str = Field(..., min_length=6)
|