From fe2e4c0a215c6c64ceaa8e1e4e8c27d2e7e49df0 Mon Sep 17 00:00:00 2001 From: Bardin08 Date: Tue, 21 May 2024 01:02:48 +0300 Subject: [PATCH 1/2] Cherry-Pick analytical events structure --- Trumpee.MassTransit.Messages/Event.cs | 34 +++++++++++++++ .../Notifications/Template/Template.cs | 43 +++++++++++++++++++ .../Template/TemplateFilledEvent.cs | 22 ---------- .../Template/TemplateNotFilledEvent.cs | 22 ---------- .../Template/TemplateNotFilledPayload.cs | 3 +- .../Template/TemplateNotFoundEvent.cs | 21 --------- .../Notifications/Validation/Validation.cs | 29 +++++++++++++ .../Validation/ValidationFailedEvent.cs | 21 --------- .../Validation/ValidationPassedEvent.cs | 20 --------- .../Trumpee.MassTransit.Messages.csproj | 4 +- 10 files changed, 110 insertions(+), 109 deletions(-) create mode 100644 Trumpee.MassTransit.Messages/Notifications/Template/Template.cs delete mode 100644 Trumpee.MassTransit.Messages/Notifications/Template/TemplateFilledEvent.cs delete mode 100644 Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledEvent.cs delete mode 100644 Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFoundEvent.cs create mode 100644 Trumpee.MassTransit.Messages/Notifications/Validation/Validation.cs delete mode 100644 Trumpee.MassTransit.Messages/Notifications/Validation/ValidationFailedEvent.cs delete mode 100644 Trumpee.MassTransit.Messages/Notifications/Validation/ValidationPassedEvent.cs diff --git a/Trumpee.MassTransit.Messages/Event.cs b/Trumpee.MassTransit.Messages/Event.cs index dd0d978..c81aaa8 100644 --- a/Trumpee.MassTransit.Messages/Event.cs +++ b/Trumpee.MassTransit.Messages/Event.cs @@ -2,11 +2,45 @@ public class Event { + private Event() + { + } + public TBody? Payload { get; set; } + public required string StreamId { get; set; } public required string Id { get; set; } public required string Action { get; set; } + public required string Version { get; set; } public required string Source { get; set; } public DateTimeOffset Timestamp { get; set; } public Dictionary? Metadata { get; set; } + + internal static Event Create( + string streamId, string action, string source, T? payload, + Dictionary? metadata = null) + { + ArgumentException.ThrowIfNullOrEmpty(streamId); + ArgumentException.ThrowIfNullOrEmpty(action); + ArgumentException.ThrowIfNullOrEmpty(source); + + var version = "v0"; + if (metadata != null && + metadata.TryGetValue("version", out var ver)) + { + version = ver; + } + + return new Event + { + Version = version, + StreamId = streamId, + Id = Guid.NewGuid().ToString("N"), + Action = action, + Source = source, + Metadata = metadata, + Timestamp = DateTimeOffset.UtcNow, + Payload = payload + }; + } } diff --git a/Trumpee.MassTransit.Messages/Notifications/Template/Template.cs b/Trumpee.MassTransit.Messages/Notifications/Template/Template.cs new file mode 100644 index 0000000..19ce3dd --- /dev/null +++ b/Trumpee.MassTransit.Messages/Notifications/Template/Template.cs @@ -0,0 +1,43 @@ +namespace Trumpee.MassTransit.Messages.Notifications.Template; + +public static class Template +{ + public static Event Filled(string source, string notificationId, string templateId) + { + var payload = new TemplateFilledPayload + { + NotificationId = notificationId, + TemplateId = templateId + }; + + return Event.Create( + notificationId, "TemplateFilled", source, payload); + } + + public static Event NotFilled( + string source, string notificationId, string templateId, IEnumerable? errors) + { + var payload = new TemplateNotFilledPayload + { + NotificationId = notificationId, + TemplateId = templateId, + Errors = errors?.ToList().AsReadOnly() + }; + + return Event.Create( + notificationId, "TemplateNotFilled", source, payload); + } + + public static Event NotFound( + string source, string notificationId, string templateId, Dictionary? props) + { + var payload = new TemplateNotFoundPayload + { + TemplateId = templateId, + Properties = props + }; + + return Event.Create( + notificationId, "TemplateNotFound", source, payload); + } +} diff --git a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateFilledEvent.cs b/Trumpee.MassTransit.Messages/Notifications/Template/TemplateFilledEvent.cs deleted file mode 100644 index f371e5f..0000000 --- a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateFilledEvent.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Trumpee.MassTransit.Messages.Notifications.Template; - -public class TemplateFilledEvent : Event -{ - public static TemplateFilledEvent GetEvent( - string source, string templateId, string notificationId) - { - return new TemplateFilledEvent - { - Id = Guid.NewGuid().ToString("N"), - Action = nameof(TemplateNotFilledEvent).ToLower(), - Source = source, - Timestamp = DateTimeOffset.UtcNow, - Metadata = [], - Payload = new TemplateFilledPayload - { - TemplateId = templateId, - NotificationId = notificationId - } - }; - } -} diff --git a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledEvent.cs b/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledEvent.cs deleted file mode 100644 index 3c1d672..0000000 --- a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledEvent.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Trumpee.MassTransit.Messages.Notifications.Template; - -public class TemplateNotFilledEvent : Event -{ - public static TemplateNotFilledEvent GetEvent( - string source, string templateId, string notificationId) - { - return new TemplateNotFilledEvent - { - Id = Guid.NewGuid().ToString("N"), - Action = nameof(TemplateNotFilledEvent).ToLower(), - Source = source, - Timestamp = DateTimeOffset.UtcNow, - Metadata = [], - Payload = new TemplateNotFilledPayload - { - TemplateId = templateId, - NotificationId = notificationId - } - }; - } -} diff --git a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledPayload.cs b/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledPayload.cs index 0f66f34..4fce4a3 100644 --- a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledPayload.cs +++ b/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFilledPayload.cs @@ -4,4 +4,5 @@ public class TemplateNotFilledPayload { public required string TemplateId { get; set; } public required string NotificationId { get; set; } -} \ No newline at end of file + public IReadOnlyList? Errors { get; set; } +} diff --git a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFoundEvent.cs b/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFoundEvent.cs deleted file mode 100644 index 24bafc9..0000000 --- a/Trumpee.MassTransit.Messages/Notifications/Template/TemplateNotFoundEvent.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Trumpee.MassTransit.Messages.Notifications.Template; - -public class TemplateNotFoundEvent : Event -{ - public static TemplateNotFoundEvent GetEvent(string source, string templateId, Dictionary props) - { - return new TemplateNotFoundEvent - { - Id = Guid.NewGuid().ToString("N"), - Action = nameof(TemplateNotFoundEvent).ToLower(), - Source = source, - Timestamp = DateTimeOffset.UtcNow, - Metadata = [], - Payload = new TemplateNotFoundPayload - { - TemplateId = templateId, - Properties = props - } - }; - } -} diff --git a/Trumpee.MassTransit.Messages/Notifications/Validation/Validation.cs b/Trumpee.MassTransit.Messages/Notifications/Validation/Validation.cs new file mode 100644 index 0000000..6b9ea26 --- /dev/null +++ b/Trumpee.MassTransit.Messages/Notifications/Validation/Validation.cs @@ -0,0 +1,29 @@ +namespace Trumpee.MassTransit.Messages.Notifications.Validation; + +public static class Validation +{ + public static Event Failed(string source, string notificationId, string error) + { + return Event.Create( + notificationId, + "ValidationFailed", + source, + new ValidationFailedPayload + { + NotificationId = notificationId, + ErrorMessage = error + }); + } + + public static Event Passed(string source, string notificationId) + { + return Event.Create( + notificationId, + "ValidationPassed", + source, + new ValidationPassedPayload + { + NotificationId = notificationId, + }); + } +} diff --git a/Trumpee.MassTransit.Messages/Notifications/Validation/ValidationFailedEvent.cs b/Trumpee.MassTransit.Messages/Notifications/Validation/ValidationFailedEvent.cs deleted file mode 100644 index 5d27400..0000000 --- a/Trumpee.MassTransit.Messages/Notifications/Validation/ValidationFailedEvent.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Trumpee.MassTransit.Messages.Notifications.Validation; - -public class ValidationFailedEvent : Event -{ - public static ValidationFailedEvent GetEvent(string source, string notificationId, string error) - { - return new ValidationFailedEvent - { - Id = Guid.NewGuid().ToString("N"), - Action = nameof(ValidationFailedEvent).ToLower(), - Source = source, - Timestamp = DateTimeOffset.UtcNow, - Metadata = [], - Payload = new ValidationFailedPayload - { - NotificationId = notificationId, - ErrorMessage = error - } - }; - } -} \ No newline at end of file diff --git a/Trumpee.MassTransit.Messages/Notifications/Validation/ValidationPassedEvent.cs b/Trumpee.MassTransit.Messages/Notifications/Validation/ValidationPassedEvent.cs deleted file mode 100644 index dd8930e..0000000 --- a/Trumpee.MassTransit.Messages/Notifications/Validation/ValidationPassedEvent.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Trumpee.MassTransit.Messages.Notifications.Validation; - -public class ValidationPassedEvent : Event -{ - public static ValidationPassedEvent GetEvent(string source, string notificationId) - { - return new ValidationPassedEvent - { - Id = Guid.NewGuid().ToString("N"), - Action = nameof(ValidationFailedEvent).ToLower(), - Source = source, - Timestamp = DateTimeOffset.UtcNow, - Metadata = [], - Payload = new ValidationPassedPayload - { - NotificationId = notificationId - } - }; - } -} \ No newline at end of file diff --git a/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj b/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj index 0609776..62d1c2c 100644 --- a/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj +++ b/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 1.0.0.13 + 1.0.0.14 - \ No newline at end of file + From f0cb71d1144b7c57449c77f9c446730529f1b75b Mon Sep 17 00:00:00 2001 From: Bardin08 Date: Fri, 24 May 2024 07:46:06 +0000 Subject: [PATCH 2/2] Bump versions by dotnet-bump-version. --- .../Trumpee.MassTransit.Messages.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj b/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj index 62d1c2c..4f9ec66 100644 --- a/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj +++ b/Trumpee.MassTransit.Messages/Trumpee.MassTransit.Messages.csproj @@ -4,7 +4,7 @@ net8.0 enable enable - 1.0.0.14 + 1.0.0.15 - + \ No newline at end of file