from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from pydantic_validation_decorator import NotBlank from typing import Optional from module_admin.annotation.pydantic_annotation import as_query class Test_itemModel(BaseModel): """ 测试单元表对应pydantic模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) id: Optional[int] = Field(default=None, description='ID') name: Optional[str] = Field(default=None, description='名称') test_category_id: Optional[int] = Field(default=None, description='测试类别ID') test_category_name: Optional[str] = Field(default=None, description='测试类别名称') eut_type_id: Optional[int] = Field(default=None, description='产品类别ID') eut_type_name: Optional[str] = Field(default=None, description='产品类别名称') config_json: Optional[str] = Field(default=None, description='模板JSON') memo: Optional[str] = Field(default=None, description='备注说明') update_by: Optional[int] = Field(default=None, description='更新者') update_time: Optional[datetime] = Field(default=None, description='修改时间') @NotBlank(field_name='name', message='名称不能为空') def get_name(self): return self.name @NotBlank(field_name='test_category_id', message='测试类别ID不能为空') def get_test_category_id(self): return self.test_category_id @NotBlank(field_name='eut_type_id', message='产品类别ID不能为空') def get_eut_type_id(self): return self.eut_type_id def validate_fields(self): self.get_name() self.get_test_category_id() self.get_eut_type_id() class Test_itemQueryModel(Test_itemModel): """ 测试单元不分页查询模型 """ pass @as_query class Test_itemPageQueryModel(Test_itemQueryModel): """ 测试单元分页查询模型 """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') class DeleteTest_itemModel(BaseModel): """ 删除测试单元模型 """ model_config = ConfigDict(alias_generator=to_camel) ids: str = Field(description='需要删除的ID')