def ots_search_index_sorters()

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