42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
from motor.motor_asyncio import AsyncIOMotorDatabase
|
|
|
|
import schemas
|
|
from crud.base import CRUDBase
|
|
|
|
__all__ = 'api_list',
|
|
|
|
from utils import get_uid
|
|
|
|
|
|
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')
|