public async Task Audit(AuditItem auditItem, CancellationToken cancellationToken) { if (!string.IsNullOrWhiteSpace(auditItem.SerializedCommand)) { await AuditPayload(auditItem.SerializedCommand, auditItem.CommandId); } CommandAuditByDateDescItem byDateDesc = new CommandAuditByDateDescItem { AdditionalProperties = auditItem.AdditionalProperties, CommandType = auditItem.CommandTypeFullName, CorrelationId = auditItem.CorrelationId, Depth = auditItem.Depth, CommandId = auditItem.CommandId, DispatchedAtUtc = auditItem.DispatchedUtc, Type = auditItem.Type }; byDateDesc.PartitionKey = _storageStrategy.GetPartitionKey(byDateDesc); byDateDesc.RowKey = _storageStrategy.GetRowKey(byDateDesc); CommandAuditByCorrelationIdItem byCorrelationId = new CommandAuditByCorrelationIdItem { AdditionalProperties = auditItem.AdditionalProperties, CommandType = auditItem.CommandTypeFullName, CorrelationId = auditItem.CorrelationId, Depth = auditItem.Depth, CommandId = auditItem.CommandId, DispatchedAtUtc = auditItem.DispatchedUtc, Type = auditItem.Type }; byCorrelationId.PartitionKey = _storageStrategy.GetPartitionKey(byCorrelationId); byCorrelationId.RowKey = _storageStrategy.GetRowKey(byCorrelationId); Task <CloudTable> byDateTableTask = _cloudStorageProvider.GetTable(_storageStrategy.GetTableName(byDateDesc)); Task <CloudTable> byCorrelationIdTableTask = _cloudStorageProvider.GetTable(_storageStrategy.GetTableName(byCorrelationId)); await Task.WhenAll(byDateTableTask, byCorrelationIdTableTask); await Task.WhenAll( byDateTableTask.Result.ExecuteAsync(TableOperation.Insert(byDateDesc), null, null, cancellationToken), byCorrelationIdTableTask.Result.ExecuteAsync(TableOperation.Insert(byCorrelationId), null, null, cancellationToken) ); }
public string GetRowKey(CommandAuditByDateDescItem tableEntity) { string uniqueifier = string.IsNullOrWhiteSpace(tableEntity.CommandId) ? $"key{Guid.NewGuid()}" : $"cid{tableEntity.CommandId}"; return($"{DateTime.MaxValue.Ticks - tableEntity.DispatchedAtUtc.Ticks:D19}-{uniqueifier}"); }
public string GetPartitionKey(CommandAuditByDateDescItem tableEntity) { return($"{tableEntity.DispatchedAtUtc:HHmm}"); }
public string GetTableName(CommandAuditByDateDescItem tableEntity) { return($"{_byDateNameNamePrefix}{tableEntity.DispatchedAtUtc.ToString("yyyyMMdd", CultureInfo.InvariantCulture)}{_byDateTableNamePostfix}"); }
public string GetRowKey(CommandAuditByDateDescItem tableEntity) { return($"{DateTime.MaxValue.Ticks - tableEntity.DispatchedAtUtc.Ticks:D19}-{tableEntity.CommandId}"); }
public string GetPartitionKey(CommandAuditByDateDescItem tableEntity) { return(tableEntity.DispatchedAtUtc.ToString("yyyyMMddHH", CultureInfo.InvariantCulture)); }
public string GetTableName(CommandAuditByDateDescItem tableEntity) { return(_byDateDescTableName); }