private async Task<TryGetSequenceValueResult> TryGetSequenceValue(SequenceKey sequenceKey) { var sequence = await StateProvider.GetAsync(sequenceKey); if (sequence == null) { throw new SequenceCouldNotBeFoundException(); } var result = new TryGetSequenceValueResult { Value = sequence.StartAt }; if (sequence.Increment == 0) { result.Result = true; return result; } var sequenceValue = sequence.CurrentValue + sequence.Increment; sequenceValue = CycleOrFailIfGreaterThanMaximum(sequence, sequenceValue); sequenceValue = CycleOrFailIfLessThanMinimum(sequence, sequenceValue); sequence.CurrentValue = sequenceValue; var updateResult = await StateProvider.UpdateAsync(sequenceKey, sequence); if (!updateResult) { return result; } result.Value = sequence.CurrentValue; result.Result = true; return result; }
private async Task <TryGetSequenceValueResult> TryGetSequenceValue(SequenceKey sequenceKey) { var sequence = await StateProvider.GetAsync(sequenceKey); if (sequence == null) { throw new SequenceCouldNotBeFoundException(); } var result = new TryGetSequenceValueResult { Value = sequence.StartAt }; if (sequence.Increment == 0) { result.Result = true; return(result); } var sequenceValue = sequence.CurrentValue + sequence.Increment; sequenceValue = CycleOrFailIfGreaterThanMaximum(sequence, sequenceValue); sequenceValue = CycleOrFailIfLessThanMinimum(sequence, sequenceValue); sequence.CurrentValue = sequenceValue; var updateResult = await StateProvider.UpdateAsync(sequenceKey, sequence); if (!updateResult) { return(result); } result.Value = sequence.CurrentValue; result.Result = true; return(result); }