public async Task DeleteAsync <TData>(IOperationExecutionInfo <TData> executionInfo) where TData : class { var entity = Convert(executionInfo); await _tableStorage.DeleteIfExistAsync( OperationExecutionInfoEntity.GeneratePartitionKey(entity.OperationName), OperationExecutionInfoEntity.GeneratePartitionKey(executionInfo.Id)); }
public async Task <IOperationExecutionInfo <TData> > GetAsync <TData>(string operationName, string id) where TData : class { var obj = await _tableStorage.GetDataAsync( OperationExecutionInfoEntity.GeneratePartitionKey(operationName), OperationExecutionInfoEntity.GenerateRowKey(id)) ?? throw new InvalidOperationException( $"Operation execution info for {operationName} #{id} not yet exists"); return(Convert <TData>(obj)); }
public async Task <IOperationExecutionInfo <TData> > GetOrAddAsync <TData>(string operationName, string operationId, Func <IOperationExecutionInfo <TData> > factory) where TData : class { var entity = await _tableStorage.GetOrInsertAsync( OperationExecutionInfoEntity.GeneratePartitionKey(operationName), OperationExecutionInfoEntity.GeneratePartitionKey(operationId), () => Convert(factory())); return(Convert <TData>(entity)); }
private static IOperationExecutionInfo <TData> Convert <TData>(OperationExecutionInfoEntity entity) where TData : class { return(new OperationExecutionInfo <TData>( entity.OperationName, entity.Id, entity.Data is string dataStr ? JsonConvert.DeserializeObject <TData>(dataStr) : ((JToken)entity.Data).ToObject <TData>(), entity.LastModified)); }