64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
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)
|
|
|
|
|