public CosmosElement GetCosmosElementContinuationToken() { MinMaxContinuationToken minMaxContinuationToken; if (this.globalMinMax == ItemComparer.MinValue) { minMaxContinuationToken = MinMaxContinuationToken.CreateMinValueContinuationToken(); } else if (this.globalMinMax == ItemComparer.MaxValue) { minMaxContinuationToken = MinMaxContinuationToken.CreateMaxValueContinuationToken(); } else if (this.globalMinMax == Undefined) { minMaxContinuationToken = MinMaxContinuationToken.CreateUndefinedValueContinuationToken(); } else { minMaxContinuationToken = MinMaxContinuationToken.CreateValueContinuationToken(this.globalMinMax); } CosmosElement minMaxContinuationTokenAsCosmosElement = MinMaxContinuationToken.ToCosmosElement(minMaxContinuationToken); return(minMaxContinuationTokenAsCosmosElement); }
public static CosmosElement ToCosmosElement(MinMaxContinuationToken minMaxContinuationToken) { if (minMaxContinuationToken == null) { throw new ArgumentNullException(nameof(minMaxContinuationToken)); } Dictionary <string, CosmosElement> dictionary = new Dictionary <string, CosmosElement>(); dictionary.Add( MinMaxContinuationToken.PropertyNames.Type, EnumToCosmosString.ConvertEnumToCosmosString(minMaxContinuationToken.Type)); if (minMaxContinuationToken.Value != null) { dictionary.Add(MinMaxContinuationToken.PropertyNames.Value, minMaxContinuationToken.Value); } return(CosmosObject.Create(dictionary)); }
private static TryCatch <IAggregator> TryCreate(bool isMinAggregation, CosmosElement continuationToken) { CosmosElement globalMinMax; if (continuationToken != null) { TryCatch <MinMaxContinuationToken> tryCreateMinMaxContinuationToken = MinMaxContinuationToken.TryCreateFromCosmosElement(continuationToken); if (!tryCreateMinMaxContinuationToken.Succeeded) { return(TryCatch <IAggregator> .FromException(tryCreateMinMaxContinuationToken.Exception)); } switch (tryCreateMinMaxContinuationToken.Result.Type) { case MinMaxContinuationToken.MinMaxContinuationTokenType.MinValue: globalMinMax = ItemComparer.MinValue; break; case MinMaxContinuationToken.MinMaxContinuationTokenType.MaxValue: globalMinMax = ItemComparer.MaxValue; break; case MinMaxContinuationToken.MinMaxContinuationTokenType.Undefined: globalMinMax = MinMaxAggregator.Undefined; break; case MinMaxContinuationToken.MinMaxContinuationTokenType.Value: globalMinMax = tryCreateMinMaxContinuationToken.Result.Value; break; default: throw new ArgumentOutOfRangeException($"Unknown {nameof(MinMaxContinuationToken.MinMaxContinuationTokenType)}: {tryCreateMinMaxContinuationToken.Result.Type}"); } } else { globalMinMax = isMinAggregation ? ItemComparer.MaxValue : (CosmosElement)ItemComparer.MinValue; } return(TryCatch <IAggregator> .FromResult( new MinMaxAggregator(isMinAggregation : isMinAggregation, globalMinMax : globalMinMax))); }