Skip to content

Commit

Permalink
Update events structure & factories
Browse files Browse the repository at this point in the history
  • Loading branch information
Bardin08 committed May 20, 2024
1 parent 67ea836 commit e3c21f1
Show file tree
Hide file tree
Showing 10 changed files with 110 additions and 107 deletions.
34 changes: 34 additions & 0 deletions Trumpee.MassTransit.Messages/Event.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,45 @@

public class Event<TBody>
{
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<string, string>? Metadata { get; set; }

internal static Event<T> Create<T>(
string streamId, string action, string source, T? payload,
Dictionary<string, string>? 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<T>
{
Version = version,
StreamId = streamId,
Id = Guid.NewGuid().ToString("N"),
Action = action,
Source = source,
Metadata = metadata,
Timestamp = DateTimeOffset.UtcNow,
Payload = payload
};
}
}
43 changes: 43 additions & 0 deletions Trumpee.MassTransit.Messages/Notifications/Template/Template.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
namespace Trumpee.MassTransit.Messages.Notifications.Template;

public static class Template
{
public static Event<TemplateFilledPayload> Filled(string source, string notificationId, string templateId)
{
var payload = new TemplateFilledPayload
{
NotificationId = notificationId,
TemplateId = templateId
};

return Event<TemplateFilledPayload>.Create(
notificationId, "TemplateFilled", source, payload);
}

public static Event<TemplateNotFilledPayload> NotFilled(
string source, string notificationId, string templateId, IEnumerable<string>? errors)
{
var payload = new TemplateNotFilledPayload
{
NotificationId = notificationId,
TemplateId = templateId,
Errors = errors?.ToList().AsReadOnly()
};

return Event<TemplateNotFilledPayload>.Create(
notificationId, "TemplateNotFilled", source, payload);
}

public static Event<TemplateNotFoundPayload> NotFound(
string source, string notificationId, string templateId, Dictionary<string, string>? props)
{
var payload = new TemplateNotFoundPayload
{
TemplateId = templateId,
Properties = props
};

return Event<TemplateNotFoundPayload>.Create(
notificationId, "TemplateNotFound", source, payload);
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ public class TemplateNotFilledPayload
{
public required string TemplateId { get; set; }
public required string NotificationId { get; set; }
}
public IReadOnlyList<string>? Errors { get; set; }
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
namespace Trumpee.MassTransit.Messages.Notifications.Validation;

public static class Validation
{
public static Event<ValidationFailedPayload> Failed(string source, string notificationId, string error)
{
return Event<ValidationFailedPayload>.Create(
notificationId,
"ValidationFailed",
source,
new ValidationFailedPayload
{
NotificationId = notificationId,
ErrorMessage = error
});
}

public static Event<ValidationPassedPayload> Passed(string source, string notificationId)
{
return Event<ValidationPassedPayload>.Create(
notificationId,
"ValidationPassed",
source,
new ValidationPassedPayload
{
NotificationId = notificationId,
});
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.0.0.8</Version>
<AssemblyVersion>1.0.0.8</AssemblyVersion>
<FileVersion>1.0.0.8</FileVersion>
</PropertyGroup>

</Project>

0 comments on commit e3c21f1

Please sign in to comment.