from pydantic import BaseModel from typing import Union, Optional, List from datetime import datetime from module_admin.annotation.pydantic_annotation import as_query from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from pydantic_validation_decorator import NotBlank, Size class CrudMetaSecurityModel(BaseModel): is_success: bool message: str class MetaSecurityRowModel(BaseModel): """ 数据源行控制表对应Pydantic模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) rowId: Optional[str] = None create_by: Optional[str] = None create_time: Optional[datetime] = None update_by: Optional[str] = None update_time: Optional[datetime] = None dbRName: Optional[str] = None dbRID: Optional[int] = None dbSName: Optional[str] = None dbTName: Optional[str] = None dbCName: Optional[str] = None ctrl_type: Optional[str] = None # control type (e.g., '0', '1', '2') obj_type: Optional[str] = None # object type (e.g., '0', '1') obj_value: Optional[object] = None obj_name: Optional[object] = None isStop: Optional[bool] = None ctrl_value: Optional[str] = None ctrl_table: Optional[str] = None ctrl_col: Optional[str] = None ctrl_system: Optional[str] = None class MetaSecurityColModel(BaseModel): """ 数据源控制表对应Pydantic模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) colId: Optional[str] = None create_by: Optional[str] = None create_time: Optional[datetime] = None update_by: Optional[str] = None update_time: Optional[datetime] = None dbRName: Optional[str] = None dbRID: Optional[int] = None dbSName: Optional[str] = None dbTName: Optional[str] = None dbCName: Optional[str] = None ctrl_type: Optional[str] = None # control type (e.g., '0', '1') obj_type: Optional[str] = None # object type (e.g., '0', '1') obj_value: Optional[object] = None obj_name: Optional[object] = None isStop: Optional[bool] = None @as_query class MetaSecurityRowPageQueryModel(MetaSecurityRowModel): """ 元数据任务分页查询模型 """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') @as_query class MetaSecurityColPageQueryModel(MetaSecurityColModel): """ 元数据任务分页查询模型 """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') class DeleteMetaSecurityModel(BaseModel): """ 删除参数配置模型 """ model_config = ConfigDict(alias_generator=to_camel) metaSecurity_ids: str = Field(description='需要删除的参数主键') class MetaSecurityApiModel(BaseModel): """ 数据源行控制表对应Pydantic模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) dbRCode: Optional[str] = None username: Optional[str] = Field(default=None, description='用户名称') password: Optional[str] = Field(default=None, description='用户密码') sqlStr: Optional[str] = Field(default=None, description='sql') @NotBlank(field_name='username', message='用户名称不能为空') @Size(field_name='username', min_length=0, max_length=100, message='用户名称长度不能超过100个字符') def get_username(self): return self.username @NotBlank(field_name='password', message='用户密码不能为空') def get_password(self): return self.password @NotBlank(field_name='sqlStr', message='sql不能为空') def get_sqlStr(self): return self.username def validate_fields(self): self.get_username() self.get_password() self.get_sqlStr()