indexstore/Indicator/indicator.py

91 lines
3.6 KiB
Python

from typing import List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from Indicator import crud, models, schemas
from Indicator.database import SessionLocal, engine
models.Base.metadata.create_all(bind=engine)
router = APIRouter()
def get_db():
try:
db = SessionLocal()
yield db
finally:
db.close()
# 新建指标
@router.post("/create/", response_model=schemas.Indicator, summary='新建指标', description='接口描述', tags=['指标'])
def create_indicator(req_body: schemas.IndicatorCreate, db: Session = Depends(get_db)):
db_indicator = crud.get_indicator_by_ename(db, ename=req_body.ename)
if db_indicator:
raise HTTPException(status_code=400, detail="Indicator already registered")
return crud.create_indicator(db=db, indicator_create=req_body)
# 删除指标
@router.post("/delete/", summary='删除指标', description='接口描述', tags=['指标'])
def delete_indicator(_id: int, db: Session = Depends(get_db)):
return crud.delete_indicator(db=db, _id=_id)
# 编辑指标
@router.post("/edit/{indicator_id}/", response_model=schemas.Indicator, summary='编辑指标', description='接口描述', tags=['指标'])
def edit_indicator(indicator_id: int, req_body: schemas.IndicatorEdit, db: Session = Depends(get_db)):
db_indicator = crud.get_indicator(db, indicator_id)
if not db_indicator:
raise HTTPException(status_code=400, detail="Indicator not found")
return crud.edit_indicator(db=db, body=req_body, _id=indicator_id)
# 查看指标
@router.get("/{indicator_id}/", response_model=schemas.Indicator, summary='查看指标', description='接口描述', tags=['指标'])
def read_indicator(indicator_id: int, db: Session = Depends(get_db)):
db_user = crud.get_indicator(db, _id=indicator_id)
if db_user is None:
raise HTTPException(status_code=404, detail="Indicator not found")
return db_user
# 查询指标
@router.post("/indicators/", response_model=List[schemas.Indicator], summary='查询指标', description='接口描述', tags=['指标'])
def read_indicators(req_body: schemas.IndicatorSearch, db: Session = Depends(get_db)):
indicators = crud.get_indicators(db, skip=req_body.skip, limit=req_body.limit)
return indicators
# 新建参数
@router.post("/parameters/{indicator_id}/create", response_model=schemas.Parameter, summary='新建参数', description='接口描述', tags=['指标参数'])
def create_parameters_for_indicator(indicator_id: int, item: schemas.ParameterCreate, db: Session = Depends(get_db)):
return crud.create_indicator_parameters(db=db, item=item, _id=indicator_id)
# 删除参数
@router.post("/parameters/{param_id}/delete", summary='删除参数', description='接口描述', tags=['指标参数'])
def delete_parameters_for_indicator(param_id: int, db: Session = Depends(get_db)):
return crud.delete_indicator_parameters(db=db, _id=param_id)
# 编辑参数
@router.post("/parameters/{param_id}/edit", summary='编辑参数', description='接口描述', tags=['指标参数'])
def edit_parameters_for_indicator(param_id: int, req_body: schemas.ParameterEdit, db: Session = Depends(get_db)):
return crud.edit_indicator_parameters(db, param_id, req_body)
# 解析定性指标Excel文件
@router.post("/upload/excel/", summary='解析定性指标Excel文件', description='接口描述', tags=['解析'])
def parse_excel():
return {"info": "TODO"}
# 上传定量指标Py文件
@router.post("/upload/py_file", summary='上传定量指标Py文件', description='接口描述', tags=['解析'])
def upload_py():
return {"info": "TODO"}