apply<T extends DatumEntityInterface> static method

List<T> apply<T extends DatumEntityInterface>(
  1. List<T> items,
  2. DatumQuery query
)

Applies query's filters, sorting, offset and limit to items.

Implementation

static List<T> apply<T extends DatumEntityInterface>(
  List<T> items,
  DatumQuery query,
) {
  var filtered = items.where((item) {
    final json = item.toDatumMap();
    return matchesMap(json, query);
  }).toList();

  if (query.sorting.isNotEmpty) {
    filtered.sort((a, b) => _compare(a.toDatumMap(), b.toDatumMap(), query.sorting));
  }

  if (query.offset != null) {
    filtered = filtered.skip(query.offset!).toList();
  }
  if (query.limit != null) {
    filtered = filtered.take(query.limit!).toList();
  }
  return filtered;
}