def _sort_elements(self, elements: IResultSet, query: SearchQuery) -> IResultSet: if query.sort_by == '': pass elif query.sort_by == 'reference': if query.reverse: raise NotImplementedError() if query.limit: raise NotImplementedError() references = [x for x in query.references if x[0] is not None] if not references: # we need at least one reference return elements reference = references[0] references_index = self.get_index('reference') elements_sorted = references_index.search_with_order(reference) elements = elements_sorted.intersect(elements) else: sort_index = self.get_index(query.sort_by) # TODO: We should assert the IIndexSort interface here, but # hypatia.field.FieldIndex is missing this interface. assert 'sort' in sort_index.__dir__() elements = elements.sort(sort_index, reverse=query.reverse, limit=query.limit or None) return elements
def _sort_elements(self, elements: IResultSet, query: SearchQuery) -> IResultSet: sort_index = self._get_index(query.sort_by) if sort_index is not None: # TODO: We should assert the IIndexSort interface here, but # hypatia.field.FieldIndex is missing this interface. assert "sort" in sort_index.__dir__() elements = elements.sort(sort_index, reverse=query.reverse, limit=query.limit or None) return elements
def _sort_elements(self, elements: IResultSet, query: SearchQuery) -> IResultSet: sort_index = self.get_index(query.sort_by) if sort_index is not None: # TODO: We should assert the IIndexSort interface here, but # hypatia.field.FieldIndex is missing this interface. assert 'sort' in sort_index.__dir__() elements = elements.sort(sort_index, reverse=query.reverse, limit=query.limit or None) return elements
def _sort_elements(self, elements: IResultSet, query: SearchQuery) -> IResultSet: if query.sort_by == '': pass elif query.sort_by == 'reference': if query.reverse: raise NotImplementedError() if query.limit: raise NotImplementedError() references = [x for x in query.references if x[0] is not None] if not references: # we need at least one reference return elements reference = self._get_query_value(references[0]) references_index = self.get_index('reference') elements_sorted = references_index.search_with_order(reference) elements = elements_sorted.intersect(elements) else: sort_index = self.get_index(query.sort_by) # TODO: We should assert the IIndexSort interface here, but # hypatia.field.FieldIndex is missing this interface. assert 'sort' in sort_index.__dir__() elements = elements.sort(sort_index, reverse=query.reverse) return elements