public async Task Record(EventGridEvent eventGridEvent) { string rowKey = ParseRowKey(eventGridEvent.Subject); var eventInfo = new EventInfo(eventGridEvent); string partitionKey = eventInfo.ResourceGroup; CloudTable table = await GetAuditTable(_storageConnnectionString); AuditEntity auditEntity = await GetResource(table, partitionKey, rowKey); auditEntity = PopulateAuditEntity(eventGridEvent, rowKey, eventInfo, partitionKey, auditEntity); var insertMergeOp = TableOperation.InsertOrMerge(auditEntity); await table.ExecuteAsync(insertMergeOp); }
private static AuditEntity PopulateAuditEntity( EventGridEvent eventGridEvent, string rowKey, EventInfo eventInfo, string partitionKey, AuditEntity auditEntity) { if (auditEntity == null) { auditEntity = new AuditEntity(partitionKey, rowKey); if (!eventGridEvent.EventType.Contains("Delete")) { auditEntity.CreatedBy = eventInfo.By; auditEntity.CreatedDt = eventGridEvent.EventTime; } } else { if (!eventGridEvent.EventType.Contains("Delete")) { auditEntity.UpdatedBy = eventInfo.By; auditEntity.UpdatedDt = eventGridEvent.EventTime; auditEntity.NoOfUpdates++; } } auditEntity.ResourceGroup = eventInfo.ResourceGroup; auditEntity.Provider = eventInfo.ResourceProvider; auditEntity.Subscription = eventInfo.Subscription; auditEntity.Subject = eventGridEvent.Subject; auditEntity.Resource = eventInfo.Resource; auditEntity.EventType = eventGridEvent.EventType; if (eventGridEvent.EventType.Contains("Delete")) { auditEntity.DeletedBy = eventInfo.By; auditEntity.DeletedDt = eventGridEvent.EventTime; } return(auditEntity); }