@router.post("/dict/detail", summary="添加字典值")
async def addDictDetail(*,
db: Session = Depends(deps.get_db),
r: asyncRedis = Depends(deps.get_redis),
u: Users = Depends(deps.user_perm(["system:dict:detail:post"])),
obj: DictDetailSchema
):
if r:
await curd_dict_data.deleteCacheByID(r, _id=obj.dict_data_id)
curd_dict_detail.create(db, obj_in=obj, creator_id=u['id'])
return respSuccessJson()
这段代码是一个基于FastAPI框架的Python后端接口,使用了路径操作装饰器@router.post
来定义一个POST请求的接口。这个接口的路径是"/dict/detail",表示添加字典值的操作。
在函数参数中,有db
表示数据库会话,r
表示异步Redis对象,u
表示用户对象,obj
表示一个DictDetailSchema对象,这个对象包含了要添加的字典值的信息。
在函数内部,首先判断了r
是否存在,如果存在则调用了curd_dict_data.deleteCacheByID
来删除指定ID的缓存。然后调用了curd_dict_detail.create
来创建新的字典值,传入了数据库会话db
、要添加的字典值信息obj
以及创建者的IDu['id']
。最后以JSON格式返回一个成功的响应。
这段代码的逻辑是在接收到添加字典值的请求后,首先删除了对应ID的缓存(如果存在),然后在数据库中创建新的字典值记录。
@router.get("/dict/detail/max-order-num/{dict_data_id}", summary="获取字典值中最大排序")
async def getDictDetailMaxOrderNum(*,
dict_data_id: int,
db: Session = Depends(deps.get_db)
):
return respSuccessJson({"max_order_num": curd_dict_detail.get_max_order_num(db, dict_data_id=dict_data_id)})
这段代码是一个基于FastAPI框架的Python后端接口,使用了路径操作装饰器@router.get
来定义一个GET请求的接口。这个接口的路径是"/dict/detail/max-order-num/{dict_data_id}",表示获取字典值中最大排序的操作。
在函数参数中,有dict_data_id
表示路径参数中的字典数据ID,db
表示数据库会话。
在函数内部,调用了curd_dict_detail.get_max_order_num
来获取指定字典数据ID的最大排序号,并将结果以JSON格式返回,其中包含了最大排序号max_order_num
。
def get_max_order_num(self, db: Session, *, dict_data_id: int ) -> int:
res = db.query(func.max(DictDetails.order_num).label('max_order_num')).filter(
DictDetails.dict_data_id == dict_data_id, DictDetails.is_deleted == 0
).first()
return res['max_order_num'] or 0
这段代码是一个方法,它接受一个数据库会话db
和一个整数dict_data_id
作为参数。
在函数内部,它使用db.query
来查询数据库,使用了func.max
函数来获取DictDetails
表中order_num
列的最大值,并使用label
给这个最大值起了一个别名max_order_num
。然后使用filter
来过滤查询的条件,包括DictDetails.dict_data_id == dict_data_id
和DictDetails.is_deleted == 0
。最后使用first
来获取查询结果的第一条记录。
最后,它返回了查询结果中max_order_num
的值,如果查询结果为空,则返回0。