fix(project):sort
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user