Beispiel #1
0
 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));
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
 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));
 }