| 12345678910111213141516171819202122232425262728293031323334353637 |
- import json
- from pydantic import BaseModel, field_validator
- from typing import Optional, Dict, Any, Literal
- class AccountBase(BaseModel):
- pool_name: str
- username: str
- password: Optional[str] = None
- extra_data: Optional[Dict[str, Any]] = None
- status: Optional[Literal['active','disable']] = None
- lock_until: float = 0
- @field_validator("extra_data", mode="before")
- def normalize_json_field(cls, v):
- if v is None:
- return None
- if isinstance(v, str):
- try:
- return json.loads(v)
- except Exception:
- return {}
- return v
- # --- 4. 请求/响应 Schema (Pydantic) ---
- class AccountCreate(AccountBase):
- pass
- class AccountResponse(AccountBase):
- id: int
- model_config = {
- "from_attributes": True
- }
- class LockRequest(BaseModel):
- pool_name: str
- username: str
- duration: Optional[int] = None
-
|