import pymongo from fastapi import APIRouter, Depends 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.SpaceCreate, db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """创建空间""" try: await crud.space.create(db, data_in, user_id=current_user.id) except pymongo.errors.DuplicateKeyError: return schemas.Msg(code=-1, msg='空间已存在', data='空间已存在') # todo 建默认文件夹 return schemas.Msg(code=0, msg='创建成功', data='创建成功') @router.post("/delete") async def delete( data_in: schemas.SpaceDelete, db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """删除空间""" # 删除空间 自己创建的 del_space = await crud.space.delete(db, _id=data_in.id, user_id=current_user.id) # 删除文件夹 del_folder = await crud.folder.find_many(db, pid=data_in.id) del_folder_ids = [f['_id'] for f in del_folder] await crud.folder.delete(db, pid=data_in.id) # 删除文件夹下的 dashboard await crud.dashboard.delete(db, **{'$in': {'_id': del_folder_ids}}) # 删除空间下的 dashboard await crud.dashboard.delete(db, pid=data_in.id) if del_space.deleted_count == 0: return schemas.Msg(code=-1, msg='error', data='删除失败') return schemas.Msg(code=0, msg='ok', dtta='删除成功')