find method

List<T> find (
  1. {int offset: 0,
  2. int limit: 0}
)

Finds Objects matching the query.

offset and limit are deprecated, explicitly call the equally named methods.

Implementation

List<T> find({int offset = 0, int limit = 0}) {
  if (offset > 0) {
    this.offset(offset);
  }
  if (limit > 0) {
    this.limit(limit);
  }
  return store.runInTransaction(TxMode.Read, () {
    if (bindings.obx_supports_bytes_array() == 1) {
      final bytesArray =
          checkObxPtr(bindings.obx_query_find(_cQuery), 'find');
      try {
        return _fbManager.unmarshalArray(bytesArray);
      } finally {
        bindings.obx_bytes_array_free(bytesArray);
      }
    } else {
      final results = <T>[];
      final visitor = DataVisitor((Pointer<Uint8> dataPtr, int length) {
        final bytes = dataPtr.asTypedList(length);
        results.add(_fbManager.unmarshal(bytes));
        return true;
      });

      final err =
          bindings.obx_query_visit(_cQuery, visitor.fn, visitor.userData);
      visitor.close();
      checkObx(err);
      return results;
    }
  });
}