sort method

Sort data according to the settings in filters.

The return value is an object different from data.

datafiltersの設定に従ってソートします。

戻り値はdataとは違うオブジェクトが返されます。

Implementation

List<MapEntry<String, DynamicMap>> sort(
  List<MapEntry<String, DynamicMap>> data,
) {
  if (data.isEmpty) {
    return data;
  }
  final order = filters.firstWhereOrNull((item) =>
      item.type == ModelQueryFilterType.orderByAsc ||
      item.type == ModelQueryFilterType.orderByDesc);
  if (order == null) {
    return data;
  }
  switch (order.type) {
    case ModelQueryFilterType.orderByAsc:
      final key = order.key;
      if (key.isEmpty) {
        return data;
      }
      return data.sortTo((a, b) => _compare(a.value[key], b.value[key]));
    case ModelQueryFilterType.orderByDesc:
      final key = order.key;
      if (key.isEmpty) {
        return data;
      }
      return data.sortTo((a, b) => _compare(b.value[key], a.value[key]));
    default:
      return data;
  }
}