Fix IO poison in handlers (UtcNow instead of a passed in date time).

This commit is contained in:
2026-07-16 17:18:53 +02:00
parent ee1e64c944
commit 283f50ba63
5 changed files with 34 additions and 35 deletions
@@ -7,7 +7,10 @@ public record ReverseJournalCommand(Guid OriginalJournalId, string Reason);
public record JournalReversedEvent(Guid OriginalJournalId, Guid ReversalJournalId);
public record ReversalData(JournalEntry OriginalJournalEntry, IReadOnlyList<Account> AffectedAccounts);
public record ReversalData(
JournalEntry OriginalJournalEntry,
IReadOnlyList<Account> AffectedAccounts,
DateTimeOffset TimeStamp);
public interface IReversalQuery
{
@@ -16,7 +19,8 @@ public interface IReversalQuery
public static class ReverseJournalHandler
{
public static async Task<ReversalData?> LoadAsync(ReverseJournalCommand cmd, IReversalQuery query)
public static async Task<ReversalData?> LoadAsync(ReverseJournalCommand cmd, IReversalQuery query,
TimeProvider timeProvider)
{
var data = await query.GetReversalDataAsync(cmd.OriginalJournalId);
return data ?? throw new InvalidOperationException($"Journal Entry {cmd.OriginalJournalId} does not exist");
@@ -28,7 +32,7 @@ public static class ReverseJournalHandler
JournalReversedEvent Event) Handle(ReverseJournalCommand cmd, ReversalData data)
{
var reversalJournal =
BalancedJournal.CreateReversal(data.OriginalJournalEntry, $"Reversal: {cmd.Reason}", DateTimeOffset.UtcNow);
BalancedJournal.CreateReversal(data.OriginalJournalEntry, $"Reversal: {cmd.Reason}", data.TimeStamp);
var accountState = data.AffectedAccounts.ToDictionary(a => a.Id);
reversalJournal.Entry.Lines.ForEach(l =>
@@ -41,6 +45,7 @@ public static class ReverseJournalHandler
{
accountUow.Update(account);
}
return (
Storage.Insert(reversalJournal.Entry),
accountUow,