get method

Future<List<Map<String, dynamic>>> get()

Executes the query and returns the results

Implementation

Future<List<Map<String, dynamic>>> get() async {
  final localStorage = SyncLayerCore.instance.localStorage;

  // Get all data from collection (returns List<DataRecord>)
  final allRecords = await localStorage.getAllData(collectionName);

  // Convert DataRecord to Map<String, dynamic>
  final allData = allRecords.map((record) {
    return jsonDecode(record.data) as Map<String, dynamic>;
  }).toList();

  // Apply filters
  var results = allData.where((data) {
    return _filters.every((filter) => filter.matches(data));
  }).toList();

  // Apply sorting
  if (_sorts.isNotEmpty) {
    results.sort((a, b) {
      for (final sort in _sorts) {
        final comparison = sort.compare(a, b);
        if (comparison != 0) return comparison;
      }
      return 0;
    });
  }

  // Apply offset
  if (_offset != null && _offset! > 0) {
    results = results.skip(_offset!).toList();
  }

  // Apply limit
  if (_limit != null && _limit! > 0) {
    results = results.take(_limit!).toList();
  }

  return results;
}