| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from pydantic import BaseModel, Field
- from typing import Optional, List
- from datetime import datetime
- # ================= Base Schema =================
- class ProxyBase(BaseModel):
- """代理基础共享属性,定义核心字段及校验规则"""
- pool_name: str
- proto: str
- ip: str
- port: int
- username: Optional[str] = None
- password: Optional[str] = None
- next_use_time: Optional[datetime] = None
- status: Optional[str] = None
- # ================= Request Schemas =================
- class ProxyCreate(ProxyBase):
- """创建代理 Payload (直接继承 Base,复用所有必填规则)"""
- pass
- class ProxyUpdate(ProxyBase):
- """
- 更新代理 Payload
- 注意:因为是更新,前端可能只传部分字段,所以这里全部重新定义为 Optional
- """
- pool_name: Optional[str] = None
- proto: Optional[str] = None
- ip: Optional[str] = None
- port: Optional[int] = None
- username: Optional[str] = None
- password: Optional[str] = None
- next_use_time: Optional[datetime] = None
- status: Optional[str] = None
- class GetNextIpPayload(BaseModel):
- """获取下个IP的请求参数"""
- pools: List[str]
- proxy_cd: int
- # ================= Response Schemas =================
- class ProxyOut(ProxyBase):
- """响应返回给前端的代理实体模型 (继承 Base,增加数据库自动生成的字段)"""
- id: int
- created_at: datetime
- updated_at: datetime
- model_config = {
- "from_attributes": True
- }
|