Skip to content

Commit 89d6c7c

Browse files
committed
refactor(mcsmapi.models.instance): 规范字段验证
- 为 InstanceCreateResult 类的字段添加类型注解,提高类型安全性 - 重构 InstanceSearchList 类,使用 field_validator 填充 daemonId,提高代码复用性和可维护性 - 优化代码格式,提高可读性
1 parent a8be093 commit 89d6c7c

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

mcsmapi/models/instance.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from enum import IntEnum
22
from typing import Any, TypedDict
3-
from pydantic import BaseModel
3+
from pydantic import BaseModel, field_validator
44
from mcsmapi.models.image import DockerConfig
55

66

@@ -218,7 +218,7 @@ def kill(self):
218218
def delete(self, deleteFile: bool = False):
219219
"""
220220
删除该实例
221-
221+
222222
:params deleteFile: 是否删除关联的文件
223223
224224
:returns: 被删除的实例的uuid
@@ -317,9 +317,9 @@ def files(
317317
class InstanceCreateResult(BaseModel):
318318
"""实例创建结果"""
319319

320-
instanceUuid: str = ""
320+
instanceUuid: str
321321
"""实例UUID"""
322-
config: InstanceConfig = InstanceConfig()
322+
config: InstanceConfig
323323
"""实例的配置信息"""
324324

325325

@@ -335,11 +335,17 @@ class InstanceSearchList(BaseModel):
335335
daemonId: str = ""
336336
"""所属的节点UUID"""
337337

338-
def __init__(self, **data: str):
339-
"""实例化对象,并在每个实例中填充 daemonId"""
340-
super().__init__(**data)
341-
for instance in self.data:
342-
instance.daemonId = self.daemonId
338+
@field_validator("data", mode="before")
339+
@classmethod
340+
def fill_daemon_id(cls, v: Any, info) -> Any:
341+
"""在验证 data 字段前填充 daemonId"""
342+
if isinstance(info.data, dict):
343+
daemon_id = info.data.get("daemonId", "")
344+
if isinstance(v, list):
345+
for instance in v:
346+
if isinstance(instance, dict):
347+
instance["daemonId"] = daemon_id
348+
return v
343349

344350

345351
class UserInstancesList(BaseModel):

0 commit comments

Comments
 (0)