fix(project):sort

This commit is contained in:
shahzeydyfah
2026-09-13 21:53:35 +03:30
parent b74b0067a6
commit 0cbf543940
3 changed files with 12 additions and 3 deletions
+7 -3
View File
@@ -10,7 +10,8 @@ from .utils.Models import TableEngineExport
class NewTableEngine:
def __init__(self, query_class, model, inputs, mode, engine: AbstractEngine, extra_filter,
default_sort_by, joins, search_cols, options=None, soft_deleted=False, unselect={}, return_query=False):
default_sort_by, joins, search_cols, options=None, soft_deleted=False, unselect={}, return_query=False,
collation={'locale': 'fa'}):
self.model = model
self.query_class = query_class
self.mode = mode
@@ -29,6 +30,7 @@ class NewTableEngine:
self.search_cols = search_cols
self.unselect = unselect
self.return_query = return_query
self.collation = collation
self.engine = engine(self)
@staticmethod
@@ -38,10 +40,12 @@ class NewTableEngine:
mode: WorkingMode = WorkingMode.Development,
extra_filter=None,
soft_deleted=False,
default_sort_by=None, joins=None, search_cols=[] ,unselect={}, return_query=False):
default_sort_by=None, joins=None, search_cols=[] ,unselect={}, return_query=False,
collation={'locale': 'fa'}):
return NewTableEngine(query_class, model, inputs, mode, engine=MongoEngine, extra_filter=extra_filter,
default_sort_by=default_sort_by, joins=joins, search_cols=search_cols,
soft_deleted=soft_deleted,unselect=unselect, return_query=return_query)
soft_deleted=soft_deleted,unselect=unselect, return_query=return_query,
collation=collation)
@staticmethod
def mssql(query_class, model, inputs, mode: WorkingMode = WorkingMode.Development, extra_filter=None,
+1
View File
@@ -17,6 +17,7 @@ class AbstractEngineClass(abc.ABC):
self.soft_deleted = table_engine.soft_deleted
self.unselect = table_engine.unselect
self.return_query = table_engine.return_query
self.collation = {'locale': 'fa'}
@abc.abstractmethod
def exe(self):
+4
View File
@@ -54,6 +54,10 @@ class MongoEngine(AbstractEngineClass):
else:
tmp = tmp.sort(sort_by)
is_natural = isinstance(sort_by, dict) and sort_by.get('key_or_list') == '$natural'
if getattr(self, 'collation', None) and not is_natural:
tmp = tmp.collation(self.collation)
if self.input.e and self.input.e.ot:
res = await tmp.to_list(None)
self.input.e.d = await self.generate_output(res)