private async Task DispatchRequestsAsync( IList <BufferedRequest> requests, DocumentNode mergedQuery, NameNode operationName, IReadOnlyDictionary <string, object> variableValues, CancellationToken cancellationToken) { int index = 0; try { IReadOnlyQueryRequest mergedRequest = QueryRequestBuilder.New() .SetQuery(mergedQuery) .SetOperation(operationName.Value) .SetVariableValues(variableValues) .SetServices(_services) .Create(); var mergedResult = (IReadOnlyQueryResult)await _queryExecutor .ExecuteAsync(mergedRequest, cancellationToken) .ConfigureAwait(false); var handledErrors = new HashSet <IError>(); for (int i = 0; i < requests.Count; i++) { index = i; QueryResultBuilder result = ExtractResult( requests[i].Aliases, mergedResult, handledErrors); IReadOnlyList <IError> mergedErrors = mergedResult.Errors ?? Array.Empty <IError>(); if (handledErrors.Count < mergedErrors.Count && i == requests.Count - 1) { foreach (IError error in mergedErrors.Except(handledErrors)) { result.AddError(error); } } requests[i].Promise.SetResult(result.Create()); } } catch (Exception ex) { for (int i = index; i < requests.Count; i++) { requests[i].Promise.SetException(ex); } } }
public static IQueryResult Deserialize( IReadOnlyDictionary <string, object?> serializedResult) { var result = new QueryResultBuilder(); if (serializedResult.TryGetValue(_data, out object?data)) { result.SetData(data as IReadOnlyDictionary <string, object?>); } if (serializedResult.TryGetValue(_extensions, out object?extensionData)) { result.SetExtensions(extensionData as IReadOnlyDictionary <string, object?>); } DeserializeErrors(result, serializedResult); return(result.Create()); }
public static IReadOnlyQueryResult Deserialize( IReadOnlyDictionary <string, object> serializedResult) { var result = new QueryResultBuilder(); var data = new OrderedDictionary(); var extensionData = new ExtensionData(); DeserializeRootField( data, serializedResult, _data); result.SetData(data); DeserializeRootField( extensionData, serializedResult, _extensions); result.SetExtensions(extensionData); DeserializeErrors(result, serializedResult); return(result.Create()); }