Update WorkflowStateStorageDriver.cs

This commit is contained in:
Sipke Schoorstra 2022-06-25 11:55:52 +02:00
parent ba973433f1
commit dc46bfe1bb

View file

@ -13,8 +13,7 @@ public class WorkflowStateStorageDriver : IStorageDriver
public ValueTask WriteAsync(string id, object value, DataDriveContext context)
{
var dictionary = GetVariablesDictionary(context);
dictionary[id] = value;
UpdateVariablesDictionary(context, dictionary => dictionary[id] = value);
return ValueTask.CompletedTask;
}
@ -27,10 +26,17 @@ public class WorkflowStateStorageDriver : IStorageDriver
public ValueTask DeleteAsync(string id, DataDriveContext context)
{
var dictionary = GetVariablesDictionary(context);
dictionary.Remove(id);
UpdateVariablesDictionary(context, dictionary => dictionary.Remove(id));
return ValueTask.CompletedTask;
}
private IDictionary<string, object> GetVariablesDictionary(DataDriveContext context) => context.WorkflowState.Properties.GetOrAdd(VariablesDictionaryStateKey, () => new Dictionary<string, object>());
private void SetVariablesDictionary(DataDriveContext context, IDictionary<string, object> dictionary) => context.WorkflowState.Properties[VariablesDictionaryStateKey] = dictionary;
private void UpdateVariablesDictionary(DataDriveContext context, Action<IDictionary<string, object>> update)
{
var dictionary = GetVariablesDictionary(context);
update(dictionary);
SetVariablesDictionary(context, dictionary);
}
}