44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
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')
|