From 399c40c2199ae754cb1c98a2695e20a2dafd1032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=9D=E5=B7=9D?= Date: Wed, 9 Nov 2022 00:52:24 +0800 Subject: [PATCH] changes --- AppIndicators/Router.py | 36 ++++++++++++++++++++++++++++++------ AppIndicators/Schemas.py | 23 +++++++++++++++++++++++ 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/AppIndicators/Router.py b/AppIndicators/Router.py index c5d132f..1a19b66 100644 --- a/AppIndicators/Router.py +++ b/AppIndicators/Router.py @@ -91,9 +91,33 @@ def func06(schema: Schemas.SearchIndicatorReqBody, db: Session = Depends(get_db) return {"items": indicators, "total": total} +@router.post("/register", summary='注册指标', tags=["指标"], response_model=Schemas.CreateIndicatorResBody) +def func07(schema: Schemas.RegisterIndicatorReqBody, db: Session = Depends(get_db)): + index_obj = Crud.get_indicator_by_ename(db, ename=schema.ename) + if index_obj: + raise HTTPException(status_code=202, detail="Indicator Already Registered") + + category_obj = Crud.get_category_by_name(db=db, title=schema.category) + if not category_obj: + raise HTTPException(status_code=202, detail="Category Not Found") + + real_schema = schema.dict() + real_schema.pop("category") + real_schema.update({"category_id": category_obj.id}) + real_schema = Schemas.CreateIndicatorReqBody(**real_schema) + + index_obj = Crud.create_indicator(db=db, schema=real_schema) + + parameters_item = schema.parameters + for parameter in parameters_item: + Crud.create_parameter(db=db, schema=parameter, _iid=index_obj.iid) + + return {"iid": index_obj.iid} + + # 新建参数 @router.post("/param/create/{iid}", summary='新建参数', tags=["指标参数"]) -def func07(iid: str, body: Schemas.EditParamReqBody, db: Session = Depends(get_db)): +def func08(iid: str, body: Schemas.EditParamReqBody, db: Session = Depends(get_db)): index_obj = Crud.get_indicator_by_iid(db=db, iid=iid) if not index_obj: raise HTTPException(status_code=400, detail="Indicator Not Found") @@ -104,7 +128,7 @@ def func07(iid: str, body: Schemas.EditParamReqBody, db: Session = Depends(get_d @router.post("/param/edit/{pid}", summary='编辑参数', tags=["指标参数"]) -def func08(pid: str, schema: Schemas.EditParamReqBody, db: Session = Depends(get_db)): +def func09(pid: str, schema: Schemas.EditParamReqBody, db: Session = Depends(get_db)): data = Crud.get_parameter_by_pid(db=db, pid=pid) if not data: raise HTTPException(status_code=202, detail="Parameter Not Existed") @@ -116,7 +140,7 @@ def func08(pid: str, schema: Schemas.EditParamReqBody, db: Session = Depends(get # 删除参数 @router.post("/param/delete/{pid}", summary='删除参数', tags=["指标参数"]) -def func09(pid: str, db: Session = Depends(get_db)): +def func10(pid: str, db: Session = Depends(get_db)): data = Crud.get_parameter_by_pid(db=db, pid=pid) if not data: raise HTTPException(status_code=202, detail="Parameter Not Existed") @@ -127,7 +151,7 @@ def func09(pid: str, db: Session = Depends(get_db)): @router.post("/category/create", summary="新建分类", tags=["指标分类"]) -def func10(schema: Schemas.CreateCategoryReqBody, db: Session = Depends(get_db)): +def func11(schema: Schemas.CreateCategoryReqBody, db: Session = Depends(get_db)): data = Crud.get_category_by_name(db=db, title=schema.title) if data: raise HTTPException(status_code=202, detail="Category Already Existed") @@ -138,7 +162,7 @@ def func10(schema: Schemas.CreateCategoryReqBody, db: Session = Depends(get_db)) @router.post("/category/delete", summary="删除分类", tags=["指标分类"]) -def func10(schema: Schemas.DeleteCategoryReqBody, db: Session = Depends(get_db)): +def func12(schema: Schemas.DeleteCategoryReqBody, db: Session = Depends(get_db)): data = Crud.get_category_by_id(db=db, category_id=schema.category_id) if not data: raise HTTPException(status_code=202, detail="Category Not Existed") @@ -152,6 +176,6 @@ def func10(schema: Schemas.DeleteCategoryReqBody, db: Session = Depends(get_db)) @router.post("/category/list", summary="分类列表", tags=["指标分类"]) -def func11(db: Session = Depends(get_db)): +def func13(db: Session = Depends(get_db)): category_objs = Crud.list_category(db=db) return [obj.to_kv() for obj in category_objs] diff --git a/AppIndicators/Schemas.py b/AppIndicators/Schemas.py index 483eae2..ead9d5c 100644 --- a/AppIndicators/Schemas.py +++ b/AppIndicators/Schemas.py @@ -44,6 +44,9 @@ class CreateIndicatorReqBody(BaseModel): category_id: str parameters: List[EditParamReqBody] + class Config: + use_enum_values = True + def to_dict(self): _dict = self.dict().copy() _dict.pop("parameters") @@ -81,6 +84,9 @@ class IndicatorFullResBody(BaseModel): category_id: str parameters: List[ParameterResBody] = [] + class Config: + use_enum_values = True + class IndicatorDescribeResBody(BaseModel): description: str @@ -92,3 +98,20 @@ class SearchIndicatorReqBody(BaseModel): category_id: Optional[str] = None page: int = 1 pagesize: int = 20 + + +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