94 lines
3.4 KiB
Python
94 lines
3.4 KiB
Python
import pymongo
|
|
from fastapi import APIRouter, Depends, Request
|
|
from motor.motor_asyncio import AsyncIOMotorDatabase
|
|
import crud, schemas
|
|
|
|
from db import get_database
|
|
from api import deps
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/create")
|
|
async def create(
|
|
data_in: schemas.DashboardCreate,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""创建看板"""
|
|
try:
|
|
await crud.dashboard.create(db, data_in, user_id=current_user.id)
|
|
except pymongo.errors.DuplicateKeyError:
|
|
return schemas.Msg(code=-1, msg='看板已存在', data='看板已存在')
|
|
|
|
return schemas.Msg(code=0, msg='ok', data='创建成功')
|
|
|
|
|
|
@router.post("/delete")
|
|
async def delete(
|
|
data_in: schemas.DashboardDelete,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""删除看板"""
|
|
del_dashboard = await crud.dashboard.delete(db, _id=data_in.id, user_id=current_user.id)
|
|
|
|
if del_dashboard.deleted_count == 0:
|
|
return schemas.Msg(code=-1, msg='error', data='删除失败')
|
|
return schemas.Msg(code=0, msg='ok', data='删除成功')
|
|
|
|
|
|
@router.post("/move")
|
|
async def move(
|
|
data_in: schemas.DashboardMove,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
) -> schemas.Msg:
|
|
"""
|
|
移动看板
|
|
"""
|
|
res = await crud.dashboard.update_one(db, {'_id': data_in.source_id},
|
|
{'$set': dict(cat=data_in.cat, pid=data_in.dest_id)})
|
|
if res.deleted_count == 0:
|
|
return schemas.Msg(code=-1, msg='error', data='删除失败')
|
|
return schemas.Msg(code=0, msg='ok', data='删除成功')
|
|
|
|
|
|
@router.post("/add_report")
|
|
async def add_report(data_in: schemas.AddReport,
|
|
game: str,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
):
|
|
"""添加报表"""
|
|
reports = [item.dict() for item in data_in.report_ids]
|
|
res = await crud.dashboard.update_one(db, {'_id': data_in.id},
|
|
{'$push': {'reports': {'$each': reports}}})
|
|
return schemas.Msg(code=0, msg='ok', data='ok')
|
|
|
|
|
|
@router.post("/del_report")
|
|
async def del_report(
|
|
game: str,
|
|
data_in: schemas.DelReport,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
):
|
|
"""删除报表"""
|
|
del_item = {'report_id': data_in.report_id}
|
|
await crud.dashboard.update_one(db, {'_id': data_in.id}, {'$pull': {'reports': del_item}})
|
|
return schemas.Msg(code=0, msg='ok', data='ok')
|
|
|
|
|
|
@router.post("/")
|
|
async def dashboards(request: Request,
|
|
game: str,
|
|
data_in: schemas.ReadDashboard,
|
|
db: AsyncIOMotorDatabase = Depends(get_database),
|
|
current_user: schemas.UserDB = Depends(deps.get_current_user)
|
|
):
|
|
"""获取一个看板"""
|
|
res = await crud.dashboard.get(db, id=data_in.id)
|
|
# res['reports'] = await crud.report.find_many(db, **{'_id': {'$in': [item['report_id'] for item in res.get('reports')]}})
|
|
return schemas.Msg(code=0, msg='ok', data=res['reports'])
|