91 lines
3.6 KiB
Python
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"}
|