File size: 1,007 Bytes
0f24635
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from motor.motor_asyncio import AsyncIOMotorDatabase
from pydantic import BaseModel
from bson import ObjectId

class BaseMongoModel(BaseModel):
    id: str | None = None

    @classmethod
    async def get(cls, db: AsyncIOMotorDatabase, collection: str, query: dict):
        return await db[collection].find_one(query)

    @classmethod
    async def get_all(cls, db: AsyncIOMotorDatabase, collection: str, query: dict = {}):
        return await db[collection].find(query).to_list(1000)

    @classmethod
    async def create(cls, db: AsyncIOMotorDatabase, collection: str, data: dict):
        result = await db[collection].insert_one(data)
        return str(result.inserted_id)

    @classmethod
    async def update(cls, db: AsyncIOMotorDatabase, collection: str, query: dict, data: dict):
        await db[collection].update_one(query, {"$set": data})

    @classmethod
    async def delete(cls, db: AsyncIOMotorDatabase, collection: str, query: dict):
        await db[collection].delete_one(query)