from typing import Union, Optional, List from pydantic import BaseModel, ConfigDict, Field from module_admin.annotation.pydantic_annotation import as_query from datetime import datetime from pydantic_validation_decorator import NotBlank, Size from pydantic.alias_generators import to_camel class MetataskModel(BaseModel): """ 参数配置表对应pydantic模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) metatask_id: Optional[int] = Field(default=None, description='任务主键') metatask_name: Optional[str] = Field(default=None, description='任务名称') metatask_type: Optional[str] = Field(default=None, description='任务类型(0 采集 1加工') ds_time: Optional[datetime] = Field(default=None, description='调度时间') create_by: Optional[str] = Field(default=None, description='创建人') create_time: Optional[datetime] = Field(default=None, description='创建时间') update_by: Optional[str] = Field(default=None, description='更新人') update_time: Optional[datetime] = Field(default=None, description='更新时间') remark: Optional[str] = Field(default=None, description='备注') status: Optional[str] = Field(default=None, description='状态') dbRName: Optional[str] = Field(default=None, description='数据源') dbRCode: Optional[int] = Field(default=None, description='数据源code') dbName: Optional[str] = Field(default=None, description='数据库') dbCode: Optional[str] = Field(default=None, description='数据库code') dbSName: Optional[str] = Field(default=None, description='模式') dbSCode: Optional[str] = Field(default=None, description='模式code') acquisitionType: Optional[str] = Field(default=None, description='采集方式') ac_target: Optional[str] = Field(default=None, description='采集目标') ds_ids: Optional[str] = Field(default=None, description='ds采集ids') ds_types: Optional[str] = Field(default=None, description='ds采集类型') class Metatask: orm_mode = True @NotBlank(field_name='metatask_name', message='任务名称不能为空') @Size(field_name='metatask_name', min_length=0, max_length=100, message='任务名称长度不能超过50个字符') def get_metatask_name(self): return self.metatask_name def validate_fields(self): self.get_metatask_name() class MetataskQueryModel(MetataskModel): """ 元数据任务不分页查询模型 """ begin_time: Optional[str]= Field(default=None, description='开始时间') end_time: Optional[str]= Field(default=None, description='结束时间') @as_query class MetataskPageObject(MetataskQueryModel): """ 元数据任务分页查询模型 """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') class MetataskPageObjectResponse(BaseModel): """ 元数据任务列表分页查询返回模型 """ rows: List[Union[MetataskModel, None]] = [] page_num: int page_size: int total: int has_next: bool class DeleteMetataskModel(BaseModel): """ 删除参数配置模型 """ metatask_ids: str ds_ids: str class OperaMetataskModel(BaseModel): """ 上下线模型 """ id: str type:str class CrudMetataskResponse(BaseModel): """ 操作参数配置响应模型 """ is_success: bool message: str