public IEnumerable <TimeSeriesItem> GetTimeSeries(List <string> collectionsToExport) { Debug.Assert(_context != null); var initialState = new TimeSeriesIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit) { StartEtag = _startDocumentEtag, StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag) }; var enumerator = new PulsedTransactionEnumerator <TimeSeriesItem, TimeSeriesIterationState>(_context, state => { if (state.StartEtagByCollection.Count != 0) { return(GetTimeSeriesFromCollections(_context, state)); } return(GetAllTimeSeriesItems(_context, state.StartEtag)); }, initialState); while (enumerator.MoveNext()) { yield return(enumerator.Current); } }
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously public async IAsyncEnumerable <TimeSeriesItem> GetTimeSeriesAsync(List <string> collectionsToExport) #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously { Debug.Assert(_context != null); var initialState = new TimeSeriesIterationState(_context, _database.Configuration.Databases.PulseReadTransactionLimit) { StartEtag = _startDocumentEtag, StartEtagByCollection = collectionsToExport.ToDictionary(x => x, x => _startDocumentEtag) }; var enumerator = new PulsedTransactionEnumerator <TimeSeriesItem, TimeSeriesIterationState>(_context, state => { if (state.StartEtagByCollection.Count != 0) { return(GetTimeSeriesFromCollections(_context, state)); } return(GetAllTimeSeriesItems(_context, state.StartEtag)); }, initialState); while (enumerator.MoveNext()) { yield return(enumerator.Current); } }
private static IEnumerable <TimeSeriesItem> GetTimeSeriesFromCollections(DocumentsOperationContext context, TimeSeriesIterationState state) { var database = context.DocumentDatabase; var collections = state.StartEtagByCollection.Keys.ToList(); foreach (var collection in collections) { var etag = state.StartEtagByCollection[collection]; state.CurrentCollection = collection; foreach (var ts in database.DocumentsStorage.TimeSeriesStorage.GetTimeSeriesFrom(context, collection, etag, long.MaxValue)) { yield return(new TimeSeriesItem { Name = database.DocumentsStorage.TimeSeriesStorage.GetOriginalName(context, ts.DocId, ts.Name), DocId = ts.DocId, Baseline = ts.Start, ChangeVector = ts.ChangeVector, Collection = ts.Collection, SegmentSize = ts.SegmentSize, Segment = ts.Segment, Etag = ts.Etag, }); } } }