from typing import Any 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( request: Request, data_in: schemas.ReportCreate, game: str, db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """新建报表""" try: await crud.report.create(db, data_in, user_id=request.user.id) except pymongo.errors.DuplicateKeyError: return schemas.Msg(code=-1, msg='error', data='报表已存在') return schemas.Msg(code=0, msg='ok', data='创建成功') @router.post("/read_report") async def read_report( request: Request, data_in: schemas.ReportRead, game: str, db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> Any: """获取已建报表""" data = await crud.report.read_report(db, user_id=request.user.id, project_id=data_in.project_id) return schemas.Msg(code=0, msg='ok', data=data) @router.post("/delete") async def delete( request: Request, data_in: schemas.ReportDelete, game: str, db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """删除报表""" # 删除Report 自己创建的 del_report = await crud.report.delete(db, _id=data_in.id, user_id=current_user.id) if del_report.deleted_count == 0: return schemas.Msg(code=-1, msg='error', data='删除失败') return schemas.Msg(code=0, msg='ok', data='删除成功')