creditrating-wcq/IndexStore/AppIndicators/Schemas.py

120 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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