import json from aioredis import Redis from fastapi import APIRouter, Depends, Request from motor.motor_asyncio import AsyncIOMotorDatabase import crud, schemas from api import deps from core.config import settings from db import get_database from db.ckdb import CKDrive, get_ck_db from db.redisdb import get_redis_pool router = APIRouter() __all__ = 'router', @router.get("/attr_list") async def read_data_attr( request: Request, game: str, cat: str, db: AsyncIOMotorDatabase = Depends(get_database), rdb: Redis = Depends(get_redis_pool), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """事件属性列表""" data = await rdb.get(f'{game}_{cat}') data = json.loads(data) res = [] data_attr = await crud.data_attr.find_many(db, game=game, cat=cat) data_attr = {item['name']: item for item in data_attr} for k, v in data.items(): res.append( {'name': k, 'data_type': settings.CK_TYPE_DICT.get(v), 'show_name': data_attr.get(k, {}).get('show_name', ''), 'is_show': data_attr.get(k, {}).get('is_show', True), 'attr_type': '预置属性' if k.startswith('#') else '自定义属性', 'unit': '' } ) return schemas.Msg(code=0, msg='ok', data=res) @router.post("/attr_edit") async def edit_data_attr( request: Request, game: str, data_in: schemas.DataAttrEdit, db: AsyncIOMotorDatabase = Depends(get_database), rdb: Redis = Depends(get_redis_pool), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """编辑事件属性""" await crud.data_attr.edit_data_attr(db, game, data_in) return schemas.Msg(code=0, msg='ok', data=data_in)