xbackend/crud/crud_space.py
2021-07-28 15:23:41 +08:00

30 lines
967 B
Python

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
)
return 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')