in rostran/handlers/basic.py [0:0]
def ots_search_index_sorters(sorters, resolved=False):
if not sorters or not resolved:
return None
mapping = {
"FieldSort": {
"mode": "SortMode",
"order": "SortOrder",
"field_name": "FieldName",
},
"PrimaryKeySort": {
"order": "SortOrder",
},
"ScoreSort": {
"order": "SortOrder",
},
"GeoDistanceSort": {
"mode": "SortMode",
"order": "SortOrder",
"field_name": "FieldName",
},
}
result = []
for sorter in sorters:
sorter_type = sorter.get("sorter_type") or "PrimaryKeySort"
sorter_type_mapping = mapping.get(sorter_type)
if not sorter_type_mapping:
continue
new_sorter = {}
for from_, to in sorter_type_mapping.items():
val = sorter.get(from_)
if val is not None:
new_sorter[to] = val
if new_sorter:
result.append({sorter_type: new_sorter})
return result