diff --git a/wolverine/a-frame-architecture/FinancialApi/ApplyFeeHandler.cs b/wolverine/a-frame-architecture/FinancialApi/ApplyFeeHandler.cs index 47adfd2..95541bd 100644 --- a/wolverine/a-frame-architecture/FinancialApi/ApplyFeeHandler.cs +++ b/wolverine/a-frame-architecture/FinancialApi/ApplyFeeHandler.cs @@ -1,22 +1,28 @@ using FinancialApi.Application; using FinancialApi.Infrastructure; using Microsoft.EntityFrameworkCore; +using Wolverine.Attributes; +using Wolverine.Persistence; namespace FinancialApi; public static class ApplyFeeHandler { - public static Task LoadAsync(ApplyFeeCommand cmd, AccountDbContext db) - => db.Set().AsNoTracking() - .FirstOrDefaultAsync(x => x.Id == cmd.AccountId); + public static Task LoadAsync( + ApplyFeeCommand cmd, + AccountDbContext db) => db.Set().AsNoTracking().SingleOrDefaultAsync(x => x.Id == cmd.AccountId); - public static (Account UpdatedAccount, FeeAppliedEvent Event) Handle(ApplyFeeCommand cmd, Account account) + [Transactional] + public static (Update UpdatedAccount, FeeAppliedEvent Event) Handle( + ApplyFeeCommand cmd, + Account account, + AccountDbContext db) { var updatedAccount = account.ApplyFee(cmd.Amount); var @event = new FeeAppliedEvent(account.Id, cmd.Amount); - return (updatedAccount, @event); + return (Storage.Update(updatedAccount), @event); } }