Implementing filter and sort in back

This commit is contained in:
2025-04-01 18:40:45 +02:00
parent 59cc709ed5
commit 56ca5156c4
8 changed files with 53 additions and 91 deletions

View File

@@ -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):