public ProcessManagerSubscription( IEventStoreConnectionProvider connectionProvider, IEventSerializer eventSerializer, ProcessManagerMediator mediator, SubscriptionCheckpointStorage checkpointStorage) : base("ProcessManager", connectionProvider.Connection, new CatchAllSubscriptionSettings()) { _eventSerializer = eventSerializer; _mediator = mediator; _checkpointStorage = checkpointStorage; _subscriptionCheckpoint = _checkpointStorage.Load(SubscriptionCheckpointId); LastCommitPosition = _subscriptionCheckpoint.LastProcessedPosition; }
public async Task Save(SubscriptionCheckpoint checkpoint) { var newCheckpointDate = DateTime.UtcNow; using (var connection = new SqlConnection(ConnectionString)) { const string sql = "UPDATE SubscriptionCheckpoint SET LastProcessedPosition = @checkpoint, EventsProcessed = @eventsProcessed, UpdatedUtc = @updated WHERE SubscriptionId = @subscriptionId"; await connection.OpenAsync(); using (var command = new SqlCommand(sql, connection)) { command.Parameters.AddWithValue("@subscriptionId", checkpoint.SubscriptionId); command.Parameters.AddWithValue("@checkpoint", checkpoint.LastProcessedPosition); command.Parameters.AddWithValue("@eventsProcessed", checkpoint.EventsProcessed); command.Parameters.AddWithValue("@updated", checkpoint.UpdatedUtc); await command.ExecuteNonQueryAsync(); } } }