getQuery<ID extends Object?, T extends Object?> method

  1. @override
Future<QuerySnapshot<ID, T>> getQuery<ID extends Object?, T extends Object?>(
  1. Query<ID, T> query
)
override

Reads the document

Implementation

@override
Future<QuerySnapshot<ID, T>> getQuery<ID extends Object?, T extends Object?>(
    Query<ID, T> query) async {
  final queryParameters = <String, dynamic>{};

  for (var operation in query.compareOperations) {
    if (operation.compareOperator != CompareOperator.isEqualTo) {
      throw 'RestDelegate can work only with CompareOperator.isEqualTo';
    }

    queryParameters[operation.field.toString()] = operation.valueToCompareTo;
  }

  return Dio()
      .get('$endpoint/${query.collectionPath}',
          queryParameters: queryParameters, options: requestOptions)
      .then(
        (response) => QuerySnapshot(
          (response.data['data'] as Iterable)
              .map(
                (element) => DocumentSnapshot<ID, T>(
                  element?[idKey] as ID ?? '' as ID,
                  element,
                  DocumentReference(
                    query.collectionPath,
                    element?[idKey] as ID ?? '' as ID,
                    this,
                  ),
                ),
              )
              .toList(),
        ),
      );
}