public DynamoDbEventModel(CelebrityEventBase eventBase) { AggregateId = eventBase.AggregateId; AggregateVersion = eventBase.AggregateVersion; Timestamp = eventBase.Timestamp; Name = eventBase.Name; Data = JsonConvert.SerializeObject(eventBase); }
public async Task CommitAsync(CelebrityEventBase @event, CancellationToken cancellationToken = default) { if (@event is null) { throw new ArgumentNullException(nameof(@event)); } var table = _dbContext.GetTargetTable <DynamoDbEventModel>(_configuration); var document = _dbContext.ToDocument(@event); var data = @event.AggregateVersion == 0 ? null : await table.GetItemAsync(@event.AggregateId, @event.AggregateVersion - 1, cancellationToken); await table.PutItemAsync(document, new PutItemOperationConfig { Expected = data }, cancellationToken); }