diff --git a/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs b/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs index aba418fc6..7b28f46db 100644 --- a/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs +++ b/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs @@ -49,6 +49,13 @@ public class DapperActivityExecutionRecordStore : IActivityExecutionStore await _store.SaveManyAsync(mappedRecords, PrimaryKeyName, cancellationToken); } + /// + public async Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default) + { + var mappedRecords = records.Select(Map).ToList(); + await store.AddManyAsync(mappedRecords, cancellationToken); + } + /// public async Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default) { diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs index 9ee9078d7..6cb1757ca 100644 --- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs +++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs @@ -35,6 +35,9 @@ public class EFCoreActivityExecutionStore( /// public async Task SaveManyAsync(IEnumerable records, CancellationToken cancellationToken = default) => await store.SaveManyAsync(records, OnSaveAsync, cancellationToken); + /// + public async Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default) => await store.AddManyAsync(records, OnSaveAsync, cancellationToken); + /// [RequiresUnreferencedCode("Calls Elsa.EntityFrameworkCore.Modules.Runtime.EFCoreActivityExecutionStore.DeserializeActivityState(RuntimeElsaDbContext, ActivityExecutionRecord, CancellationToken)")] public async Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default) diff --git a/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs b/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs index 8766faf7d..dc5e3e3ba 100644 --- a/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs +++ b/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs @@ -28,6 +28,12 @@ public class MongoActivityExecutionLogStore(MongoDbStore + public Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default) + { + return mongoDbStore.AddManyAsync(records, cancellationToken); + } + /// public Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default) { diff --git a/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs b/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs index 22f90bbc3..a3675bba5 100644 --- a/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs +++ b/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs @@ -10,4 +10,9 @@ public interface ILogRecordStore where T : ILogRecord /// If a record does not already exist, it is added to the store; if it does exist, its existing entry is updated. /// Task SaveManyAsync(IEnumerable records, CancellationToken cancellationToken = default); + + /// + /// Adds a collection of log records to the store. + /// + Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs b/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs index fc4545d02..65bbefa54 100644 --- a/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs +++ b/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs @@ -36,6 +36,13 @@ public class MemoryActivityExecutionStore : IActivityExecutionStore return Task.CompletedTask; } + /// + public Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default) + { + _store.AddMany(records, x => x.Id); + return Task.CompletedTask; + } + /// public Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default) { diff --git a/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs b/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs index 7a9d1e125..59893807f 100644 --- a/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs +++ b/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs @@ -17,6 +17,11 @@ public class NoopActivityExecutionStore : IActivityExecutionStore return Task.CompletedTask; } + public Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default) + { + return Task.CompletedTask; + } + public Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default) { return Task.FromResult(null);