42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
"""平台账号 Schema
|
||
|
||
凭证语义约定:
|
||
- login_password / api_config:Create 时传入即加密存储;Update 时 None 表示不修改。
|
||
- Read 永不返回凭证明文/密文,只给布尔标记(has_login_password / has_api_config)。
|
||
"""
|
||
|
||
from datetime import datetime
|
||
from typing import Optional
|
||
|
||
from sqlmodel import SQLModel
|
||
|
||
|
||
class AccountBase(SQLModel):
|
||
name: str
|
||
platform: Optional[str] = None
|
||
remark: Optional[str] = None
|
||
login_user: Optional[str] = None
|
||
|
||
|
||
class AccountCreate(AccountBase):
|
||
login_password: Optional[str] = None # 登录密码(明文传入,加密存储)
|
||
api_config: Optional[str] = None # API 配置 JSON 字符串(加密存储,供 SDK 同步)
|
||
|
||
|
||
class AccountUpdate(SQLModel):
|
||
name: Optional[str] = None
|
||
platform: Optional[str] = None
|
||
remark: Optional[str] = None
|
||
login_user: Optional[str] = None
|
||
login_password: Optional[str] = None # None = 不修改
|
||
api_config: Optional[str] = None # None = 不修改
|
||
|
||
|
||
class AccountRead(AccountBase):
|
||
id: int
|
||
created_at: datetime
|
||
asset_count: int = 0 # 引用该账号的资产数(列表接口填充)
|
||
has_login_password: bool = False
|
||
has_api_config: bool = False
|
||
last_synced_at: Optional[datetime] = None
|