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"}