Implementing filter and sort in back
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import datetime, UTC
|
||||
from typing import Optional
|
||||
|
||||
from beanie import PydanticObjectId
|
||||
from motor.motor_asyncio import AsyncIOMotorCollection
|
||||
from pydantic import BaseModel, Field, computed_field
|
||||
|
||||
|
||||
@@ -31,7 +32,7 @@ class CrudDocument(BaseModel):
|
||||
return cls.__name__
|
||||
|
||||
@classmethod
|
||||
def _get_collection(cls, db):
|
||||
def _get_collection(cls, db) -> AsyncIOMotorCollection:
|
||||
return db.get_collection(cls._collection_name())
|
||||
|
||||
@classmethod
|
||||
@@ -42,10 +43,16 @@ class CrudDocument(BaseModel):
|
||||
return await cls.get(db, result.inserted_id)
|
||||
|
||||
@classmethod
|
||||
def list(cls, db, filters):
|
||||
query = filters.filter(cls._get_collection(db))
|
||||
query = filters.sort(query)
|
||||
return query
|
||||
def find(cls, db, filters):
|
||||
return {
|
||||
"collection": cls._get_collection(db),
|
||||
"query_filter": filters.filter({}),
|
||||
"sort": filters.sort(),
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def list(cls, db):
|
||||
return cls._get_collection(db).find({})
|
||||
|
||||
@classmethod
|
||||
async def get(cls, db, model_id):
|
||||
|
||||
Reference in New Issue
Block a user