import pymongo from motor.motor_asyncio import AsyncIOMotorDatabase from crud.base import CRUDBase from schemas import * __all__ = 'space', class CRUDSpace(CRUDBase): async def create(self, db: AsyncIOMotorDatabase, obj_in: SpaceCreate, user: UserDB): obj_in.members.append({'_id': user.id, 'name': user.name, 'authority': 'rw'}) db_obj = SpaceDB( **obj_in.dict(by_alias=True), user_id=user.id, _id=uuid.uuid1().hex ) await db[self.coll_name].insert_one(db_obj.dict(by_alias=True)) async def read_space(self, db, user_id, project_id): return await self.read_have(db, user_id=user_id, project_id=project_id) async def create_index(self, db: AsyncIOMotorDatabase): await db[self.coll_name].create_index( [('project_id', pymongo.DESCENDING), ('name', pymongo.DESCENDING), ('user_id', pymongo.DESCENDING)], unique=True) space = CRUDSpace('space')