from motor.motor_asyncio import AsyncIOMotorDatabase import time, random import schemas from crud.base import CRUDBase __all__ = 'api_list', def get_uid(): return hex(int(time.time() * 10 ** 7) + random.randint(0, 10000))[2:] class CRUDApiList(CRUDBase): async def add_api(self, db: AsyncIOMotorDatabase, data_in: schemas.AddApi): where = {'path': data_in.path} data = {'$set': schemas.AddApiDB(**data_in.dict()).dict(by_alias=True)} return await self.update_one(db, where, data, upsert=True) async def update_api(self, db: AsyncIOMotorDatabase, data_in: schemas.UpdateApi): where = {'path': data_in.path} data = {'$set': data_in.dict()} is_exists = await self.find_one(db, {'path': data_in.path}) if not is_exists: data['$set']['_id'] = get_uid() return await self.update_one(db, where, data, upsert=True) async def edit_api(self, db: AsyncIOMotorDatabase, data_in: schemas.EditApi): where = {'_id': data_in.id} data = {'$set': data_in.dict(exclude={'id'})} return await self.update_one(db, where, data) async def all_api(self, db: AsyncIOMotorDatabase): return await self.find_many(db) async def del_api(self, db: AsyncIOMotorDatabase, data_in: schemas.DelApi): return await self.delete_id(db, *data_in.ids) async def create_index(self, db: AsyncIOMotorDatabase): await db[self.coll_name].create_index('path', unique=True) api_list = CRUDApiList('api_list')