2022-11-08 09:43:43 +08:00
|
|
|
|
from enum import Enum
|
|
|
|
|
from pydantic import BaseModel, constr
|
|
|
|
|
from typing import List, Optional
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Regex
|
|
|
|
|
ENameRegex = constr(regex="^[a-z0-9_]{1,}$")
|
2022-11-20 17:23:28 +08:00
|
|
|
|
CNameRegex = constr(regex=r"^[\u4e00-\u9fa5a-zA-Z0-9()%\/]+$")
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Enums
|
|
|
|
|
class NatureEnum(Enum):
|
|
|
|
|
enum01 = "定量"
|
|
|
|
|
enum02 = "定性"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Parameters
|
2022-11-08 23:48:57 +08:00
|
|
|
|
class EditParamReqBody(BaseModel):
|
2022-11-08 09:43:43 +08:00
|
|
|
|
ename: ENameRegex = "example_param"
|
|
|
|
|
cname: CNameRegex = "示例参数"
|
|
|
|
|
description: str = "参数介绍文字"
|
|
|
|
|
|
|
|
|
|
|
2022-11-10 01:42:40 +08:00
|
|
|
|
class ViewParameterResBody(BaseModel):
|
2022-11-08 23:48:57 +08:00
|
|
|
|
pid: str
|
|
|
|
|
cname: CNameRegex = "示例参数"
|
|
|
|
|
description: str = "参数介绍文字"
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
class CreateCategoryReqBody(BaseModel):
|
|
|
|
|
title: str
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
class DeleteCategoryReqBody(BaseModel):
|
|
|
|
|
category_id: str
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
|
|
|
|
|
class CreateIndicatorReqBody(BaseModel):
|
2022-11-08 09:43:43 +08:00
|
|
|
|
ename: ENameRegex = "example_indicator"
|
|
|
|
|
cname: CNameRegex = "示例指标"
|
|
|
|
|
description: str = "指标介绍文字"
|
|
|
|
|
nature: NatureEnum
|
2022-11-08 23:48:57 +08:00
|
|
|
|
category_id: str
|
|
|
|
|
parameters: List[EditParamReqBody]
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
2022-11-09 00:52:24 +08:00
|
|
|
|
class Config:
|
|
|
|
|
use_enum_values = True
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
def to_dict(self):
|
|
|
|
|
_dict = self.dict().copy()
|
|
|
|
|
_dict.pop("parameters")
|
|
|
|
|
return _dict
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
class CreateIndicatorResBody(BaseModel):
|
2022-11-08 09:43:43 +08:00
|
|
|
|
iid: str
|
|
|
|
|
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
class EditIndicatorReqBody(BaseModel):
|
2022-11-08 09:43:43 +08:00
|
|
|
|
cname: Optional[CNameRegex] = None
|
|
|
|
|
description: Optional[str] = None
|
|
|
|
|
nature: Optional[NatureEnum] = None
|
2022-11-08 23:48:57 +08:00
|
|
|
|
category_id: Optional[str] = None
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
use_enum_values = True
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
def del_null_value(self):
|
|
|
|
|
_dict = self.dict()
|
|
|
|
|
for key in list(_dict.keys()):
|
|
|
|
|
if not _dict.get(key):
|
|
|
|
|
del _dict[key]
|
|
|
|
|
return _dict
|
|
|
|
|
|
|
|
|
|
|
2022-11-10 01:42:40 +08:00
|
|
|
|
class ViewIndicatorResBody(BaseModel):
|
2022-11-08 23:48:57 +08:00
|
|
|
|
iid: str
|
|
|
|
|
cname: CNameRegex = "示例指标"
|
|
|
|
|
description: str = "指标介绍文字"
|
|
|
|
|
nature: NatureEnum
|
|
|
|
|
category: str
|
2022-11-10 01:42:40 +08:00
|
|
|
|
parameters: List[ViewParameterResBody] = []
|
2022-11-08 23:48:57 +08:00
|
|
|
|
|
2022-11-09 00:52:24 +08:00
|
|
|
|
class Config:
|
|
|
|
|
use_enum_values = True
|
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
|
|
|
|
|
class IndicatorDescribeResBody(BaseModel):
|
|
|
|
|
description: str
|
|
|
|
|
|
2022-11-08 09:43:43 +08:00
|
|
|
|
|
2022-11-08 23:48:57 +08:00
|
|
|
|
class SearchIndicatorReqBody(BaseModel):
|
2022-11-08 09:43:43 +08:00
|
|
|
|
name: Optional[str] = None
|
|
|
|
|
nature: Optional[str] = None
|
2022-11-08 23:48:57 +08:00
|
|
|
|
category_id: Optional[str] = None
|
2022-11-08 09:43:43 +08:00
|
|
|
|
page: int = 1
|
|
|
|
|
pagesize: int = 20
|
2022-11-09 00:52:24 +08:00
|
|
|
|
|
|
|
|
|
|
2022-11-10 01:42:40 +08:00
|
|
|
|
class SearchIndicatorResBody(BaseModel):
|
|
|
|
|
items: List[ViewIndicatorResBody]
|
|
|
|
|
total: int
|
|
|
|
|
|
|
|
|
|
|
2022-11-09 00:52:24 +08:00
|
|
|
|
class RegisterIndicatorReqBody(BaseModel):
|
|
|
|
|
ename: ENameRegex = "example_indicator"
|
|
|
|
|
cname: CNameRegex = "示例指标"
|
|
|
|
|
description: str = "指标介绍文字"
|
|
|
|
|
nature: NatureEnum
|
|
|
|
|
category: str
|
|
|
|
|
parameters: List[EditParamReqBody]
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
use_enum_values = True
|
|
|
|
|
|
|
|
|
|
def to_dict(self):
|
|
|
|
|
_dict = self.dict().copy()
|
|
|
|
|
_dict.pop("parameters")
|
|
|
|
|
return _dict
|