toGQLJson method

Map<String, dynamic> toGQLJson({
  1. bool includeIfNull = false,
})

Implementation

Map<String, dynamic> toGQLJson({
  bool includeIfNull = false,
}) {
  final rawJson = toJson()..remove('runtimeType');

  final json = <String, dynamic>{};
  for (final key in rawJson.keys) {
    final value = rawJson[key];

    if (value is GqlJsonWrapper) {
      json[key] = {
        'data': value.toGQLJson(),
        if (value.onConflict != null)
          'on_conflict': value.onConflict!.toJson(),
      };
      continue;
    }

    if (value is List<GqlJsonWrapper>) {
      json[key] = {'data': value.map((e) => e.toGQLJson()).toList()};
      continue;
    }

    if (includeIfNull) {
      json[key] = rawJson[key];
    } else {
      if (rawJson[key] != null) {
        json[key] = rawJson[key];
      } else {
        json.remove(key);
      }
    }
  }

  return json;
}