from motor.motor_asyncio import AsyncIOMotorDatabase import schemas from crud.base import CRUDBase __all__ = 'role', class CRUDApiList(CRUDBase): async def add_role(self, db: AsyncIOMotorDatabase, data_in: schemas.AddRole): where = {'name': data_in.name, 'game': data_in.game} data = {'$set': schemas.AddRoleDB(**data_in.dict()).dict(by_alias=True)} return await self.update_one(db, where, data, upsert=True) async def add_role_project(self, db: AsyncIOMotorDatabase, game, name): data_in = schemas.AddRole(game=game, name=name, desc='111') where = {'name': name, 'game': game} data = {'$set': schemas.AddRoleDB(**data_in.dict()).dict(by_alias=True)} await self.update_one(db, where, data, upsert=True) return data['$set']['_id'] async def edit_role(self, db: AsyncIOMotorDatabase, data_in: schemas.EditRole): data = data_in.dict() where = {'_id': data.pop('role_id')} up_data = {'$set': data} return await self.update_one(db, where, up_data) async def check(self, db, **kwargs): res = await self.find_one(db, kwargs) return True if res else False async def dom_roles(self, db: AsyncIOMotorDatabase, game: str): where = {'game': game} return await self.find_many(db, where) async def del_role(self, db: AsyncIOMotorDatabase, data_in: schemas.DelRole): return await self.delete_id(db, *data_in.ids) async def create_index(self, db: AsyncIOMotorDatabase): await db[self.coll_name].create_index([('game', 1), ('name', 1)], unique=True) role = CRUDApiList('role')