Browse Source

Improve error DB error handling. (#1241)

pull/1244/head
Sebastian Stehle 1 year ago
committed by GitHub
parent
commit
24782bd550
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 14
      backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj
  2. 12
      backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj
  3. 2
      backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
  4. 4
      backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
  5. 14
      backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  6. 7
      backend/src/Squidex.Web/ApiExceptionConverter.cs
  7. 24
      backend/src/Squidex/Squidex.csproj
  8. 14
      backend/tests/Squidex.Web.Tests/ApiExceptionFilterAttributeTests.cs
  9. 2
      backend/tests/Squidex.Web.Tests/Pipeline/RequestExceptionMiddlewareTests.cs

14
backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj

@ -40,13 +40,13 @@
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="8.0.3" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.NetTopologySuite" Version="8.0.3" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.AI.EntityFramework" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.EntityFramework" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.27.0" />
<PackageReference Include="Squidex.Events.EntityFramework" Version="7.27.0" />
<PackageReference Include="Squidex.Flows.EntityFramework" Version="7.27.0" />
<PackageReference Include="Squidex.Hosting" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging.EntityFramework" Version="7.27.0" />
<PackageReference Include="Squidex.AI.EntityFramework" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.EntityFramework" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.28.0" />
<PackageReference Include="Squidex.Events.EntityFramework" Version="7.28.0" />
<PackageReference Include="Squidex.Flows.EntityFramework" Version="7.28.0" />
<PackageReference Include="Squidex.Hosting" Version="7.28.0" />
<PackageReference Include="Squidex.Messaging.EntityFramework" Version="7.28.0" />
<PackageReference Include="Squidex.OpenIdDict.EntityFramework" Version="5.8.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" />

12
backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj

@ -25,12 +25,12 @@
<PackageReference Include="MongoDB.Driver.GridFS" Version="2.30.0" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.AI.Mongo" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="7.27.0" />
<PackageReference Include="Squidex.Events.Mongo" Version="7.27.0" />
<PackageReference Include="Squidex.Flows.Mongo" Version="7.27.0" />
<PackageReference Include="Squidex.Hosting" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging.Mongo" Version="7.27.0" />
<PackageReference Include="Squidex.AI.Mongo" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="7.28.0" />
<PackageReference Include="Squidex.Events.Mongo" Version="7.28.0" />
<PackageReference Include="Squidex.Flows.Mongo" Version="7.28.0" />
<PackageReference Include="Squidex.Hosting" Version="7.28.0" />
<PackageReference Include="Squidex.Messaging.Mongo" Version="7.28.0" />
<PackageReference Include="Squidex.OpenIddict.MongoDb" Version="5.8.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" />

2
backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj

@ -20,7 +20,7 @@
<PackageReference Include="NetTopologySuite" Version="2.5.0" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Flows" Version="7.27.0" />
<PackageReference Include="Squidex.Flows" Version="7.28.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />

4
backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj

@ -29,8 +29,8 @@
<PackageReference Include="NJsonSchema" Version="11.0.2" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.AI" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.27.0" />
<PackageReference Include="Squidex.AI" Version="7.28.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.28.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />

14
backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -24,13 +24,13 @@
<PackageReference Include="NodaTime" Version="3.2.0" />
<PackageReference Include="OpenTelemetry.Api" Version="1.9.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets" Version="7.27.0" />
<PackageReference Include="Squidex.Caching" Version="7.27.0" />
<PackageReference Include="Squidex.Events" Version="7.27.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="7.27.0" />
<PackageReference Include="Squidex.Log" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging" Version="7.27.0" />
<PackageReference Include="Squidex.Text" Version="7.27.0" />
<PackageReference Include="Squidex.Assets" Version="7.28.0" />
<PackageReference Include="Squidex.Caching" Version="7.28.0" />
<PackageReference Include="Squidex.Events" Version="7.28.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="7.28.0" />
<PackageReference Include="Squidex.Log" Version="7.28.0" />
<PackageReference Include="Squidex.Messaging" Version="7.28.0" />
<PackageReference Include="Squidex.Text" Version="7.28.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />

7
backend/src/Squidex.Web/ApiExceptionConverter.cs

@ -10,6 +10,7 @@ using System.Security;
using System.Text;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Squidex.Events;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Translations;
using Squidex.Infrastructure.Validation;
@ -39,7 +40,6 @@ public static class ApiExceptionConverter
var error = new ErrorDto { StatusCode = statusCode };
Enrich(httpContext, error);
return (error, null);
}
@ -50,7 +50,6 @@ public static class ApiExceptionConverter
var error = CreateError(problem.Status ?? 500, problem.Title);
Enrich(httpContext, error);
return (error, null);
}
@ -61,7 +60,6 @@ public static class ApiExceptionConverter
var result = CreateError(exception);
Enrich(httpContext, result.Error);
return result;
}
@ -106,6 +104,9 @@ public static class ApiExceptionConverter
case DomainException ex:
return (CreateError(400, ex.Message, ex.ErrorCode), GetInner(exception));
case EventStoreConcurrencyException ex:
return (CreateError(409, ex.Message, "CONCURRENCY_EXCEPTION"), ex);
case OperationCanceledException:
return (CreateError(408), null);

24
backend/src/Squidex/Squidex.csproj

@ -60,17 +60,17 @@
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="ReportGenerator" Version="5.4.1" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets.Azure" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.S3" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.Azure" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.S3" Version="7.28.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.28.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="21.8.0" />
<PackageReference Include="Squidex.Events.GetEventStore" Version="7.27.0" />
<PackageReference Include="Squidex.Hosting" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging.All" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.27.0" />
<PackageReference Include="Squidex.Events.GetEventStore" Version="7.28.0" />
<PackageReference Include="Squidex.Hosting" Version="7.28.0" />
<PackageReference Include="Squidex.Messaging.All" Version="7.28.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.28.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="YDotNet" Version="0.4.3" />
<PackageReference Include="YDotNet.Native" Version="0.4.3" />
@ -84,11 +84,11 @@
</ItemGroup>
<ItemGroup Condition="'$(IncludeMagick)' == 'true'">
<PackageReference Include="Squidex.Assets.ImageMagick" Version="7.27.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="7.28.0" />
</ItemGroup>
<ItemGroup Condition="'$(IncludeKafka)' == 'true'">
<PackageReference Include="Squidex.Messaging.Kafka" Version="7.27.0" />
<PackageReference Include="Squidex.Messaging.Kafka" Version="7.28.0" />
</ItemGroup>
<PropertyGroup>

14
backend/tests/Squidex.Web.Tests/ApiExceptionFilterAttributeTests.cs

@ -13,6 +13,7 @@ using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Logging;
using Squidex.Events;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Validation;
@ -137,6 +138,19 @@ public class ApiExceptionFilterAttributeTests
.MustNotHaveHappened();
}
[Fact]
public void Should_generate_409_for_ventStoreConcurrencyException()
{
var context = Error(new EventStoreConcurrencyException("1"));
sut.OnException(context);
Validate(409, context.Result, context.Exception, "CONCURRENCY_EXCEPTION");
A.CallTo(log)
.MustHaveHappened();
}
[Fact]
public void Should_generate_410_for_DomainObjectDeletedException()
{

2
backend/tests/Squidex.Web.Tests/Pipeline/RequestExceptionMiddlewareTests.cs

@ -140,7 +140,6 @@ public class RequestExceptionMiddlewareTests
var failingNext = new RequestDelegate(context =>
{
context.Response.StatusCode = 412;
return Task.CompletedTask;
});
@ -162,7 +161,6 @@ public class RequestExceptionMiddlewareTests
var failingNext = new RequestDelegate(context =>
{
context.Response.StatusCode = 412;
return Task.CompletedTask;
});

Loading…
Cancel
Save