Skip to content

Commit

Permalink
#99: add exception mapper
Browse files Browse the repository at this point in the history
  • Loading branch information
eggwhat committed Jan 8, 2024
1 parent d74b42f commit 4165256
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace SwiftParcel.ExternalAPI.Lecturer.Application.Events.Rejected
{
public class AddParcelRejected
{
public Guid ParcelId { get; }
public string Reason { get; }
public string Code { get; }

public AddParcelRejected(Guid parcelId, string reason, string code)
{
ParcelId = parcelId;
Reason = reason;
Code = code;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Convey.CQRS.Events;

namespace SwiftParcel.ExternalAPI.Lecturer.Application.Events.Rejected
{
public class CancelOrderRejected : IRejectedEvent
{
public Guid OrderId { get; }
public string Reason { get; }
public string Code { get; }

public CancelOrderRejected(Guid orderId, string reason, string code)
{
OrderId = orderId;
Reason = reason;
Code = code;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Convey.CQRS.Events;

namespace SwiftParcel.ExternalAPI.Lecturer.Application.Events.Rejected
{
public class ConfirmOrderRejected : IRejectedEvent
{
public Guid OrderId { get; }
public string Reason { get; }
public string Code { get; }

public ConfirmOrderRejected (Guid orderId, string reason, string code)
{
OrderId = orderId;
Reason = reason;
Code = code;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Convey.CQRS.Events;

namespace SwiftParcel.ExternalAPI.Lecturer.Application.Events.Rejected
{
public class CreateOrderRejected : IRejectedEvent
{
public Guid OrderId { get; }
public Guid CustomerId { get; }
public Guid ParcelId { get; }
public string Reason { get; }
public string Code { get; }

public CreateOrderRejected(Guid orderId, Guid customerId, Guid parcelId, string reason, string code)
{
OrderId = orderId;
CustomerId = customerId;
ParcelId = parcelId;
Reason = reason;
Code = code;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using Convey.MessageBrokers.RabbitMQ;
using SwiftParcel.ExternalAPI.Lecturer.Application.Exceptions;
using SwiftParcel.ExternalAPI.Lecturer.Application.Commands;
using SwiftParcel.ExternalAPI.Lecturer.Application.Events.Rejected;

namespace SwiftParcel.ExternalAPI.Lecturer.Infrastructure.Exceptions
{
public class ExceptionToMessageMapper : IExceptionToMessageMapper
{
public object Map(Exception exception, object message)
=> exception switch
{
InquiresServiceConnectionException ex => message switch
{
AddParcel m => new AddParcelRejected(m.ParcelId, ex.Message, ex.Code),
_ => null
},
InquiresServiceException ex => message switch
{
AddParcel m => new AddParcelRejected(m.ParcelId, ex.Message, ex.Code),
_ => null
},
OffersServiceConnectionException ex => message switch
{
CreateOrder m => new CreateOrderRejected(m.OrderId, m.CustomerId, m.ParcelId, ex.Message, ex.Code),
ConfirmOrder m => new ConfirmOrderRejected(m.OrderId, ex.Message, ex.Code),
CancelOrder m => new CancelOrderRejected(m.OrderId, ex.Message, ex.Code),
_ => null
},
OffersServiceException ex => message switch
{
CreateOrder m => new CreateOrderRejected(m.OrderId, m.CustomerId, m.ParcelId, ex.Message, ex.Code),
ConfirmOrder m => new ConfirmOrderRejected(m.OrderId, ex.Message, ex.Code),
CancelOrder m => new CancelOrderRejected(m.OrderId, ex.Message, ex.Code),
_ => null
},
OfferNotFoundException ex => message switch
{
ConfirmOrder m => new ConfirmOrderRejected(m.OrderId, ex.Message, ex.Code),
CancelOrder m => new CancelOrderRejected(m.OrderId, ex.Message, ex.Code),
_ => null
},
_ => null
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public static IConveyBuilder AddInfrastructure(this IConveyBuilder builder)
.AddFabio()
.AddRabbitMq(plugins: p => p.AddJaegerRabbitMqPlugin())
.AddMessageOutbox(o => o.AddMongo())
//.AddExceptionToMessageMapper<ExceptionToMessageMapper>()
.AddExceptionToMessageMapper<ExceptionToMessageMapper>()
.AddMongo()
.AddRedis()
.AddMetrics()
Expand All @@ -92,9 +92,9 @@ public static IApplicationBuilder UseInfrastructure(this IApplicationBuilder app
.UseMetrics()
.UseRabbitMq()
.SubscribeCommand<AddParcel>()
.SubscribeCommand<CreateOrder>();
//.SubscribeCommand<DeleteParcel>()
//.SubscribeEvent<CustomerCreated>();
.SubscribeCommand<CreateOrder>()
.SubscribeCommand<ConfirmOrder>()
.SubscribeCommand<CancelOrder>();

return app;
}
Expand Down

0 comments on commit 4165256

Please sign in to comment.