code/KustoCopyConsole/Entity/InMemory/ActivityCache.cs (32 lines of code) (raw):
using KustoCopyConsole.Entity.RowItems;
using System.Collections.Immutable;
namespace KustoCopyConsole.Entity.InMemory
{
internal class ActivityCache : CacheBase<ActivityRowItem>
{
public ActivityCache(
ActivityRowItem item,
IImmutableDictionary<long, IterationCache> iterationMap)
: base(item)
{
IterationMap = iterationMap;
}
public ActivityCache(ActivityRowItem item)
: this(item, ImmutableDictionary<long, IterationCache>.Empty)
{
}
public IImmutableDictionary<long, IterationCache> IterationMap { get; }
public ActivityCache CleanOnRestart()
{
var newIterationMap = IterationMap.Values
.Select(i => i.CleanOnRestart())
.ToImmutableDictionary(i => i.RowItem.IterationId);
return new ActivityCache(RowItem, newIterationMap);
}
public ActivityCache AppendIteration(IterationCache iteration)
{
var iterationId = iteration.RowItem.IterationId;
return new ActivityCache(RowItem, IterationMap.SetItem(iterationId, iteration));
}
}
}