indexstore/AppIndicators/Schemas.py

120 lines
2.6 KiB
Python
Raw Normal View History

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