diff --git a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AppMutationsGraphType.cs b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AppMutationsGraphType.cs index 93275e729..22c30512c 100644 --- a/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AppMutationsGraphType.cs +++ b/src/Squidex.Domain.Apps.Entities/Contents/GraphQL/Types/AppMutationsGraphType.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using GraphQL; using GraphQL.Resolvers; using GraphQL.Types; using Newtonsoft.Json.Linq; @@ -307,16 +308,31 @@ namespace Squidex.Domain.Apps.Entities.Contents.GraphQL.Types private static IFieldResolver ResolveAsync(Func>, Task> action) { - return new FuncFieldResolver>(c => + return new FuncFieldResolver>(async c => { var e = (GraphQLExecutionContext)c.UserContext; - return action(c, command => + try { - command.ExpectedVersion = c.GetArgument("expectedVersion", EtagVersion.Any); + return await action(c, command => + { + command.ExpectedVersion = c.GetArgument("expectedVersion", EtagVersion.Any); + + return e.CommandBus.PublishAsync(command); + }); + } + catch (ValidationException ex) + { + c.Errors.Add(new ExecutionError(ex.Message)); - return e.CommandBus.PublishAsync(command); - }); + throw; + } + catch (DomainException ex) + { + c.Errors.Add(new ExecutionError(ex.Message)); + + throw; + } }); } diff --git a/src/Squidex/Squidex.csproj b/src/Squidex/Squidex.csproj index 0f1cfd7b0..ce5079f50 100644 --- a/src/Squidex/Squidex.csproj +++ b/src/Squidex/Squidex.csproj @@ -48,6 +48,7 @@ + diff --git a/src/Squidex/WebStartup.cs b/src/Squidex/WebStartup.cs index 7632fba3a..b2338e0ec 100644 --- a/src/Squidex/WebStartup.cs +++ b/src/Squidex/WebStartup.cs @@ -6,6 +6,7 @@ // ========================================================================== using System; +using Ben.Diagnostics; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration;