Ejemplo n.º 1
0
    async def get(cls, **kwargs) -> Optional["MongoDBModel"]:
        db = get_db_client()
        result = await db.get(cls, **kwargs)
        if not result:
            return None

        result["id"] = result.pop("_id")
        return cls(**result)
Ejemplo n.º 2
0
    async def list(cls, raw=True, _limit=0, _offset=0, **kwargs):
        db = get_db_client()
        cursor = db.list(cls, _limit=_limit, _offset=_offset, **kwargs)

        result = []
        async for document in cursor:
            document["id"] = document.pop("_id")
            result.append(document)

        if not raw:
            return (cls(**record) for record in result)

        return result
Ejemplo n.º 3
0
    async def save(
        self,
        include: set = None,
        exclude: set = None,
        rewrite_fields: dict = None,
    ) -> int:
        db = get_db_client()

        if not rewrite_fields:
            rewrite_fields = {}

        for field, value in rewrite_fields.items():
            setattr(self, field, value)

        insert_result = await db.insert(self, include=include, exclude=exclude)
        self.id = insert_result.inserted_id
        return self.id
Ejemplo n.º 4
0
 async def count(cls, **kwargs) -> int:
     db = get_db_client()
     result = await db.count(cls, **kwargs)
     return result
Ejemplo n.º 5
0
 async def delete(cls, **kwargs) -> DeleteResult:
     db = get_db_client()
     result = await db.delete(cls, **kwargs)
     return result
Ejemplo n.º 6
0
 async def create_indexes(cls) -> Optional[List[str]]:
     if hasattr(cls.Meta, "indexes"):
         db = get_db_client()
         collection = db.get_collection(cls.Meta.collection)
         return await collection.create_indexes(cls.Meta.indexes)
Ejemplo n.º 7
0
 async def update_many(cls, filter_kwargs: dict, **kwargs) -> UpdateResult:
     db = get_db_client()
     result = await db.update_many(cls,
                                   filter_kwargs=filter_kwargs,
                                   **kwargs)
     return result