xbackend/crud/crud_project.py
2021-05-15 15:38:02 +08:00

40 lines
1.6 KiB
Python

from motor.motor_asyncio import AsyncIOMotorDatabase
from crud.base import CRUDBase
from schemas import *
__all__ = 'project',
class CRUDProject(CRUDBase):
async def create(self, db: AsyncIOMotorDatabase, obj_in: ProjectCreate, user_id: str):
db_obj = ProjectDB(
**obj_in.dict(), user_id=user_id, members=[user_id],
_id=uuid.uuid1().hex
)
return await db[self.coll_name].insert_one(db_obj.dict(by_alias=True))
async def read_project(self, db: AsyncIOMotorDatabase, user_id: str, **kwargs):
return await self.read_have(db, user_id=user_id, **kwargs)
async def add_members(self, db: AsyncIOMotorDatabase, obj_in: ProjectMember):
p = await self.get(db, obj_in.project_id)
members = list(set(p.get('members')) | set(obj_in.members))
await self.update_one(db, {'_id': obj_in.project_id}, {'$set': {'members': members}})
async def del_members(self, db: AsyncIOMotorDatabase, obj_in: ProjectMember):
p = await self.get(db, obj_in.project_id)
members = list(set(p.get('members')) - set(obj_in.members))
await self.update_one(db, {'_id': obj_in.project_id}, {'$set': {'members': members}})
async def rename(self, db: AsyncIOMotorDatabase, obj_in: ProjectRename):
await self.update_one(db, {'_id': obj_in.project_id}, {'$set': {'name': obj_in.rename}})
async def create_index(self, db: AsyncIOMotorDatabase):
await db[self.coll_name].create_index('game', unique=True)
await db[self.coll_name].create_index('name', unique=True)
project = CRUDProject('project')