_makeSorter()

in lib/protocol/encoder.js [1384:1453]


    _makeSorter(aSorter) {
        const properties = {};

        if (aSorter.fieldSort) {
            var fieldSortProperties = {
                fieldName: aSorter.fieldSort.fieldName,
                order: aSorter.fieldSort.order,
                mode: aSorter.fieldSort.mode
            };
            if (aSorter.fieldSort.missingValue) {
                fieldSortProperties.missingValue = TableStore.PlainBufferBuilder.serializeSearchValue(aSorter.fieldSort.missingValue, "missingValue");
            } else if (aSorter.fieldSort.missing) {
                fieldSortProperties.missingValue = TableStore.PlainBufferBuilder.serializeSearchValue(aSorter.fieldSort.missing, "missing");
            }
            if (aSorter.fieldSort.nestedFilter) {
                var nestedFilterProperties = {
                    path: aSorter.fieldSort.nestedFilter.path,
                    filter: TableStore.encoder._makeQuery(aSorter.fieldSort.nestedFilter.filter)
                };
                fieldSortProperties.nestedFilter = tsSearchProtos.NestedFilter.create(nestedFilterProperties);
            }
            if (aSorter.fieldSort.missingField) {
                fieldSortProperties.missingField = aSorter.fieldSort.missingField;
            }
            properties.fieldSort = tsSearchProtos.FieldSort.create(fieldSortProperties);
        } else if (aSorter.geoDistanceSort) {
            var geoDistanceSortProperties = {
                fieldName: aSorter.geoDistanceSort.fieldName,
                points: aSorter.geoDistanceSort.points,
                order: aSorter.geoDistanceSort.order,
                mode: aSorter.geoDistanceSort.mode,
                distanceType: aSorter.geoDistanceSort.distanceType
            };
            if (aSorter.geoDistanceSort.nestedFilter) {
                var nestedFilterProperties = {
                    path: aSorter.geoDistanceSort.nestedFilter.path,
                    filter: TableStore.encoder._makeQuery(aSorter.geoDistanceSort.nestedFilter.filter)
                };

                geoDistanceSortProperties.nestedFilter = tsSearchProtos.NestedFilter.create(nestedFilterProperties);
            }

            var geoDistanceSort = tsSearchProtos.GeoDistanceSort.create(geoDistanceSortProperties);

            properties.geoDistanceSort = geoDistanceSort;
        } else if (aSorter.scoreSort) {
            var scoreSortProperties = {
                order: aSorter.scoreSort.order
            };
            var scoreSort = tsSearchProtos.ScoreSort.create(scoreSortProperties);

            properties.scoreSort = scoreSort;
        } else if (aSorter.primaryKeySort) {
            var primaryKeySortProperties = {
                order: aSorter.primaryKeySort.order
            };
            var primaryKeySort = tsSearchProtos.PrimaryKeySort.create(primaryKeySortProperties)

            properties.pkSort = primaryKeySort;
        } else if (aSorter.docSort) {
            var docSortProperties = {
                order: aSorter.docSort.order
            }
            var docSort = tsSearchProtos.DocSort.create(docSortProperties);

            properties.docSort = docSort;
        }

        return tsSearchProtos.Sorter.create(properties);
    },