feat: implement transaction handling and add integration tests for Plaid transaction handlers

This commit is contained in:
Stevan Freeborn
2026-03-09 04:29:01 -05:00
parent 62a7dde443
commit 0bc810cab6
11 changed files with 298 additions and 37 deletions
@@ -26,6 +26,14 @@ internal sealed class PlaidAddedTransactionHandler : IPlaidAddedTransactionHandl
_appDbContext = appDbContext;
}
public static PlaidAddedTransactionHandler From(
ILogger<PlaidAddedTransactionHandler> logger,
AppDbContext appDbContext
)
{
return new(logger, appDbContext);
}
public static PlaidAddedTransactionHandler From(IServiceProvider serviceProvider)
{
return new(
@@ -26,6 +26,14 @@ internal sealed class PlaidModifiedTransactionHandler : IPlaidModifiedTransactio
_appDbContext = appDbContext;
}
public static PlaidModifiedTransactionHandler From(
ILogger<PlaidModifiedTransactionHandler> logger,
AppDbContext appDbContext
)
{
return new(logger, appDbContext);
}
public static PlaidModifiedTransactionHandler From(IServiceProvider serviceProvider)
{
return new(
@@ -71,6 +79,7 @@ internal sealed class PlaidModifiedTransactionHandler : IPlaidModifiedTransactio
}
var newTransactionData = Transaction.From(
existing.Id,
existing.UserId,
existing.AccountId,
plaidModifiedTransaction.Merchant,
@@ -28,6 +28,15 @@ internal sealed class PlaidTransactionProcessor : IPlaidTransactionProcessor
_removedHandler = removedHandler;
}
internal static PlaidTransactionProcessor From(
IPlaidAddedTransactionHandler addedHandler,
IPlaidModifiedTransactionHandler modifiedHandler,
IPlaidRemovedTransactionHandler removedHandler
)
{
return new(addedHandler, modifiedHandler, removedHandler);
}
internal static PlaidTransactionProcessor From(IServiceProvider provider)
{
return new(
@@ -28,6 +28,15 @@ internal sealed class PlaidTransactionSyncer : IPlaidTransactionSyncer
_transactionProcessor = plaidTransactionProcessor;
}
public static PlaidTransactionSyncer From(
ILogger<PlaidTransactionSyncer> logger,
IPlaidTransactionService plaidTransactionService,
IPlaidTransactionProcessor plaidTransactionProcessor
)
{
return new(logger, plaidTransactionService, plaidTransactionProcessor);
}
public static PlaidTransactionSyncer From(IServiceProvider serviceProvider)
{
return new(