public async Task <(object Data, object[]? Errors)> ExecuteAsync(GraphQLExecutionContext context, GraphQLQuery query) { Guard.NotNull(context, nameof(context)); var result = await Executor.ExecuteAsync(execution => { context.Setup(execution); execution.Schema = graphQLSchema; execution.Inputs = query.Inputs; execution.Query = query.Query; }); if (result.Errors != null && result.Errors.Any()) { log.LogWarning(w => w .WriteProperty("action", "GraphQL") .WriteProperty("status", "Failed") .WriteArray("errors", a => { foreach (var error in result.Errors) { a.WriteObject(error, (error, e) => e.WriteException(error)); } })); } var errors = result.Errors?.Select(x => (object)new { x.Message, x.Locations }).ToArray(); return(result.Data, errors); }
public async Task <(bool HasError, object Response)> QueryAsync(Context context, GraphQLQuery query) { Guard.NotNull(context, nameof(context)); Guard.NotNull(query, nameof(query)); var model = await GetModelAsync(context.App); var ctx = new GraphQLExecutionContext(context, resolver); var result = await QueryInternalAsync(model, ctx, query); return(result); }
public async Task <(bool HasError, object Response)> QueryAsync(Context context, params GraphQLQuery[] queries) { Guard.NotNull(context, nameof(context)); Guard.NotNull(queries, nameof(queries)); var model = await GetModelAsync(context.App); var ctx = new GraphQLExecutionContext(context, resolver); var result = await Task.WhenAll(queries.Select(q => QueryInternalAsync(model, ctx, q))); return(result.Any(x => x.HasError), result.Map(x => x.Response)); }
public async Task <(object Data, object[]? Errors)> ExecuteAsync(GraphQLExecutionContext context, GraphQLQuery query) { Guard.NotNull(context, nameof(context)); var result = await new DocumentExecuter().ExecuteAsync(execution => { context.Setup(execution); execution.Schema = graphQLSchema; execution.Inputs = query.Variables?.ToInputs(); execution.Query = query.Query; }).ConfigureAwait(false); return(result.Data, result.Errors?.Select(x => (object)new { x.Message, x.Locations }).ToArray()); }
public async Task <(object Data, object[] Errors)> ExecuteAsync(GraphQLExecutionContext context, GraphQLQuery query) { Guard.NotNull(context, nameof(context)); var result = await new DocumentExecuter().ExecuteAsync(options => { options.Inputs = query.Variables?.ToInputs() ?? new Inputs(); options.Query = query.Query; options.OperationName = query.OperationName; options.Schema = graphQLSchema; options.UserContext = context; }).ConfigureAwait(false); return(result.Data, result.Errors?.Select(x => (object)new { x.Message, x.Locations }).ToArray()); }
public async Task <(object Data, object[] Errors)> QueryAsync(IAppEntity app, ClaimsPrincipal user, GraphQLQuery query) { Guard.NotNull(app, nameof(app)); Guard.NotNull(query, nameof(query)); if (string.IsNullOrWhiteSpace(query.Query)) { return(new object(), new object[0]); } var modelContext = await GetModelAsync(app); var ctx = new GraphQLExecutionContext(app, assetRepository, commandBus, contentQuery, user, urlGenerator); return(await modelContext.ExecuteAsync(ctx, query)); }
public async Task <(object Data, object[] Errors)> QueryAsync(QueryContext context, GraphQLQuery query) { Guard.NotNull(context, nameof(context)); Guard.NotNull(query, nameof(query)); if (string.IsNullOrWhiteSpace(query.Query)) { return(new object(), new object[0]); } var modelContext = await GetModelAsync(context.App); var ctx = new GraphQLExecutionContext(context, assetRepository, contentQuery, urlGenerator); return(await modelContext.ExecuteAsync(ctx, query)); }
private async Task <(bool HasError, object Response)> QueryInternalAsync(GraphQLModel model, GraphQLExecutionContext ctx, GraphQLQuery query) { if (string.IsNullOrWhiteSpace(query.Query)) { return(false, new { data = new object() }); } var result = await model.ExecuteAsync(ctx, query); if (result.Errors?.Any() == true) { return(false, new { data = result.Data, errors = result.Errors }); } else { return(false, new { data = result.Data }); } }