getAll<T> method

Future<Result<List<T>>> getAll<T>({
  1. dynamic field,
  2. dynamic isEqualTo,
  3. dynamic isLessThan,
  4. dynamic isLessThanOrEqualTo,
  5. dynamic isGreaterThan,
  6. dynamic isGreaterThanOrEqualTo,
  7. dynamic arrayContains,
  8. List? arrayContainsAny,
  9. List? whereIn,
  10. bool? isNull,
  11. int limit = 10,
})

Implementation

Future<Result<List<T>>> getAll<T>({
  dynamic field,
  dynamic isEqualTo,
  dynamic isLessThan,
  dynamic isLessThanOrEqualTo,
  dynamic isGreaterThan,
  dynamic isGreaterThanOrEqualTo,
  dynamic arrayContains,
  List<dynamic>? arrayContainsAny,
  List<dynamic>? whereIn,
  bool? isNull,
  int limit = 10,
  // Query? query,
  // DocumentSnapshot? startAfterDoc,
}) async {
  final localDb = await localRepo();
  try {
    if (hasRemotePriority) {
      final result = await remoteRepo!.getAll<T>(
        field: field,
        isEqualTo: isEqualTo,
        isLessThan: isLessThan,
        isLessThanOrEqualTo: isLessThanOrEqualTo,
        isGreaterThan: isGreaterThan,
        isGreaterThanOrEqualTo: isGreaterThanOrEqualTo,
        arrayContains: arrayContains,
        arrayContainsAny: arrayContainsAny,
        whereIn: whereIn,
        isNull: isNull,
        limit: limit,
      );

      if (result.isSuccessfulObj) {
        return Result.success(obj: result.obj!.whereType<T>().toList());
      }
    }

    if (includeLocalTransactions) {
      try {
        final result = await localDb!.getAll<T>();

        if (result.hasFailed) {
          Logger.error(
            StackTrace.current,
            '$tableName: A failure occurred when locally getting all objects.\n${result.log?.error}',
          );
        } else if (result.isSuccessfulObj) {
          return Result.success(obj: result.obj!.whereType<T>().toList());
        }
      } catch (e, st) {
        Logger.error(st, e.toString());
      }
    }

    if (includeRemoteTransactions) {
      final result = await remoteRepo!.getAll<T>(
        field: field,
        isEqualTo: isEqualTo,
        isLessThan: isLessThan,
        isLessThanOrEqualTo: isLessThanOrEqualTo,
        isGreaterThan: isGreaterThan,
        isGreaterThanOrEqualTo: isGreaterThanOrEqualTo,
        arrayContains: arrayContains,
        arrayContainsAny: arrayContainsAny,
        whereIn: whereIn,
        isNull: isNull,
        limit: limit,
        // query: query,
        // startAfterDoc: startAfterDoc,
      );

      if (result.isSuccessfulObj) {
        return Result.success(obj: result.obj!.whereType<T>().toList());
      } else {
        Logger.error(
          StackTrace.current,
          '$tableName: A failure occurred when remotely getting all objects.\n${result.log?.error}',
        );
      }
    }

    return Result.error(
      log: Log(msg: 'An error occurred when querying a list'),
    );
  } catch (e, st) {
    return _getErrorLog(msg: e.toString(), stacktrace: st);
  } finally {
    // await localDb?.close();
  }
}