fastapi用户系统模块——“添加字典值”+“获取字典值中最大排序“

@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_idDictDetails.is_deleted == 0。最后使用first来获取查询结果的第一条记录。

最后,它返回了查询结果中max_order_num的值,如果查询结果为空,则返回0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值