You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

206 lines
11 KiB

from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field, Extra
from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size
from typing import Literal, Optional, List, Dict, Any
from module_admin.annotation.pydantic_annotation import as_query
class DataCatalogRequest(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True)
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='目录序号')
content_name: Optional[str] = Field(default=None, alias="contentName", description='目录名称')
content_stat: Optional[str] = Field(default=None, alias="contentStat", description='目录状态')
content_intr: Optional[str] = Field(default=None, alias="contentIntr", description='目录简介')
content_pic: Optional[str] = Field(default=None, alias="contentPic", description='目录负责人')
supr_content_onum: Optional[int] = Field(default=None, alias="suprContentOnum", description='上级目录序号')
leaf_node_flag: Optional[int] = Field(default=None, alias="leafNodeFlag", description='叶子结点标志(自动计算)')
upd_prsn: Optional[str] = Field(default=None, alias="updPrsn", description='更新人员(必填)')
upd_time: Optional[datetime] = Field(default=None, alias="updTime", description='更新时间')
# 校验逻辑保持不变
@NotBlank(field_name='content_name', message='目录名称不能为空')
@Size(field_name='content_name', min_length=0, max_length=255, message='目录名称长度不能超过255个字符')
@NotBlank(field_name='upd_prsn', message='更新人员不能为空')
@Size(field_name='upd_prsn', min_length=0, max_length=255, message='更新人员长度不能超过255个字符')
@NotBlank(field_name='content_stat', message='目录状态不能为空')
@Size(field_name='content_stat', min_length=0, max_length=255)
def validate_fields(self):
pass
class DataCatalogResponse(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
content_onum: Optional[int] = Field(default=None,alias="contentOnum", description='目录ID')
content_name: Optional[str] = Field(default=None,alias="contentName", description='目录名称')
content_stat: Optional[str] = Field(default=None,alias="contentStat", description='目录状态')
content_intr: Optional[str] = Field(default=None,alias="contentIntr", description='目录简介')
content_pic: Optional[str] = Field(default=None,alias="contentPic", description='目录负责人')
supr_content_onum: Optional[int] = Field(default=None,alias="suprContentOnum", description='上级目录序号')
leaf_node_flag: Optional[int] = Field(default=None,alias="leafNodeFlag", description='叶子结点标志')
upd_prsn: Optional[str] = Field(default=None,alias="updPrsn", description='更新人员')
upd_time: Optional[datetime] = Field(default=None,alias="updTime", description='更新时间')
class DataCatalogQueryModel(DataCatalogRequest):
"""
目录管理不分页查询模型
"""
begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query
class DataCatalogPageQueryModel(DataCatalogQueryModel):
"""
目录管理分页查询模型
"""
page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数')
class DeleteDataCatalogModel(BaseModel):
"""
删除目录模型
"""
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True)
content_onums: str = Field(alias="contentOnums", description='需要删除的目录ID')
class DataCatalogChild(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
rela_onum: Optional[int] = Field(default=None, alias="relaOnum", description='目录关系序号')
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='目录序号')
ast_onum: Optional[int] = Field(default=None, alias="astOnum", description='资产序号')
rela_type: Optional[str] = Field(default="归属关系", alias="relaType", description='关系类型')
rela_eff_begn_date: Optional[datetime] = Field(default=None, alias="relaEffBegnDate", description='关系有效起始日期')
rela_eff_end_date: Optional[datetime] = Field(default=None, alias="relaEffEndDate", description='关系有效终止日期')
upd_prsn: Optional[str] = Field(default=None, alias="updPrsn", description='更新人员')
rela_status: Optional[str] = Field(default=None, alias="relaStatus", description='关系状态')
class DataCatalogResponseWithChildren(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='目录ID')
content_name: Optional[str] = Field(default=None, alias="contentName", description='目录名称')
content_stat: Optional[str] = Field(default=None, alias="contentStat", description='目录状态')
content_intr: Optional[str] = Field(default=None, alias="contentIntr", description='目录简介')
content_pic: Optional[str] = Field(default=None, alias="contentPic", description='目录负责人')
supr_content_onum: Optional[int] = Field(default=None, alias="suprContentOnum", description='上级目录序号')
leaf_node_flag: Optional[int] = Field(default=None, alias="leafNodeFlag", description='叶子结点标志')
upd_prsn: Optional[str] = Field(default=None, alias="updPrsn", description='更新人员')
upd_time: Optional[datetime] = Field(default=None, alias="updTime", description='更新时间')
children: List[DataCatalogChild] = Field(default_factory=list, description='子关系列表')
# 数据资产树模型
class DataAssetCatalogTreeNode(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
data_ast_eng_name: Optional[str] = Field(default=None, alias="dataAssetCatalogNo", description='数据资产序号')
data_ast_cn_name: Optional[str] = Field(default=None, alias="dataAssetCatalogName", description='数据资产名称')
ast_no: Optional[int] = Field(default=None, alias="dataAssetCatalogAstno", description='资产编号')
children: List['DataAssetCatalogTreeNode'] = Field(default_factory=list, description='子节点列表')
class DataAssetCatalogTreeResponse(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
data_ast_src: Optional[str] = Field(default=None, alias="dataAssetSysName", description='数据资产系统名称')
children: List[DataAssetCatalogTreeNode] = Field(default_factory=list, description='子节点列表')
class DataCatalogMovedRequest(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra='ignore', # 使用字符串形式替代Extra.ignore
from_attributes=True
)
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='移动前的目录序号')
supr_content_onum: Optional[int] = Field(default=None, alias="suprContentOnum", description='移动前的上级目录序号')
supr_content_onum_after: Optional[int] = Field(default=None, alias="suprContentOnumAfter", description='移动后的上级目录序号')
class DataCatalogMergeRequest(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra='ignore',
from_attributes=True
)
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='移动前的目录序号')
supr_content_onum: Optional[int] = Field(default=None, alias="suprContentOnum", description='移动前的上级目录序号')
content_onum_after: Optional[int] = Field(default=None, alias="contentOnumAfter", description='合并前的上级目录序号')
supr_content_onum_after: Optional[int] = Field(default=None, alias="suprContentOnumAfter", description='合并后的上级目录序号')
class DataCatalogMoverelRequest(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra='ignore',
from_attributes=True
)
rela_onum: Optional[int] = Field(default=None, alias="relaOnum", description='关系序号')
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='目录序号')
content_onum_after: Optional[int] = Field(default=None, alias="contentOnumAfter", description='移动后的目录序号')
class DataCatalogMoverelRequest(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra='ignore',
from_attributes=True
)
rela_onum: Optional[int] = Field(default=None, alias="relaOnum", description='关系序号')
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='目录序号')
content_onum_after: Optional[int] = Field(default=None, alias="contentOnumAfter", description='移动后的目录序号')
class DataAstBookmarkRelaRequest(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
extra='ignore',
from_attributes=True
)
rela_onum: Optional[int] = Field(default=None, alias="relaOnum", description='唯一关系序号')
user_id: Optional[str] = Field(default=None, alias="userId", description='用户ID')
data_ast_no: Optional[str] = Field(default=None, alias="dataAstNo", description='数据资产编号')
bookmark_orde: Optional[int] = Field(default=0, alias="bookmarkOrde", description='收藏顺序')
bookmark_time: Optional[datetime] = Field(default_factory=datetime.now, alias="bookmarkTime", description='收藏时间')
content_onum: Optional[int] = Field(default=None, alias="contentOnum", description='目录序号')
rela_type: Optional[str] = Field(default="归属关系", alias="relaType", description='关系类型')
rela_eff_begn_date: Optional[datetime] = Field(default=None, alias="relaEffBegnDate", description='关系有效起始日期')
rela_eff_end_date: Optional[datetime] = Field(default=None, alias="relaEffEndDate", description='关系有效终止日期')
class DataAstIndxRequest(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, populate_by_name=True, from_attributes=True)
ast_no: Optional[str] = Field(default=None, alias="astNo", description='资产编号')
indx_no: Optional[str] = Field(default=None, alias="indxNo", description='指标编号')
indx_name: Optional[str] = Field(default=None, alias="indxName", description='指标名称')
indx_val: Optional[float] = Field(default=None, alias="indxVal", description='指标值')
class DataAstIndxResponse(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ast_no: Optional[str] = Field(default=None, alias="astNo", description='资产编号')
indx_no: Optional[str] = Field(default=None, alias="indxNo", description='指标编号')
indx_name: Optional[str] = Field(default=None, alias="indxName", description='指标名称')
indx_val: Optional[float] = Field(default=None, alias="indxVal", description='指标值')