public void CanCreateTimeSeriesWithoutPassingName() { using (var store = GetDocumentStore()) { var baseline = RavenTestHelper.UtcToday.EnsureMilliseconds(); const string documentId = "users/ayende"; using (var bulkInsert = store.BulkInsert()) { bulkInsert.Store(new User { Name = "Oren" }, documentId); using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <StockPrice>(documentId)) { var measure = new TimeSeriesEntry <StockPrice> { Timestamp = baseline, Value = new StockPrice { Close = 1, Open = 2, High = 3, Low = 4, Volume = 55 }, Tag = "tag" }; timeSeriesBulkInsert.Append(measure); } } using (var session = store.OpenSession()) { var val = session.TimeSeriesFor <StockPrice>(documentId) .Get().Single(); Assert.Equal(1, val.Value.Close); Assert.Equal(2, val.Value.Open); Assert.Equal(3, val.Value.High); Assert.Equal(4, val.Value.Low); Assert.Equal(55, val.Value.Volume); Assert.Equal("tag", val.Tag); Assert.Equal(baseline, val.Timestamp, RavenTestHelper.DateTimeComparer.Instance); } using (var session = store.OpenSession()) { var doc = session.Load <User>(documentId); var names = session.Advanced.GetTimeSeriesFor(doc); Assert.Equal(1, names.Count); Assert.Equal("StockPrices", names[0]); } } }
public static TimeSeriesEntry ToTimeSeries(this JProperty token) { var date = Formats.ParseDateTime(token.Name); var entry = new TimeSeriesEntry { Timestamp = date, Open = token.First.Value <double>("1. open"), High = token.First.Value <double>("2. high"), Low = token.First.Value <double>("3. low"), Close = token.First.Value <double>("4. close"), Volume = token.First.Value <long>("5. volume") }; return(entry); }
public void CanCreateSimpleTimeSeries2() { using (var store = GetDocumentStore()) { var baseline = RavenTestHelper.UtcToday; const string documentId = "users/ayende"; using (var bulkInsert = store.BulkInsert()) { bulkInsert.Store(new { Name = "Oren" }, documentId); var measure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline.AddMinutes(1), Value = new HeartRateMeasure { HeartRate = 59d }, Tag = "watches/fitbit" }; using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId, "Heartrate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(1), new HeartRateMeasure { HeartRate = 59 }, "watches/fitbit"); timeSeriesBulkInsert.Append(baseline.AddMinutes(2), new HeartRateMeasure { HeartRate = 60 }, "watches/fitbit"); timeSeriesBulkInsert.Append(baseline.AddMinutes(2), new HeartRateMeasure { HeartRate = 61 }, "watches/fitbit"); } } using (var session = store.OpenSession()) { var val = session.TimeSeriesFor <HeartRateMeasure>(documentId, "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue) .ToList(); Assert.Equal(2, val.Count); } } }
public void CanCreateSimpleTimeSeries() { using (var store = GetDocumentStore()) { var baseline = RavenTestHelper.UtcToday.EnsureMilliseconds(); const string documentId = "users/ayende"; using (var bulkInsert = store.BulkInsert()) { bulkInsert.Store(new { Name = "Oren" }, documentId); using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId, "Heartrate")) { var measure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline, Value = new HeartRateMeasure { HeartRate = 59 }, Tag = "watches/fitbit" }; timeSeriesBulkInsert.Append(measure); } } using (var session = store.OpenSession()) { var val = session.TimeSeriesFor <HeartRateMeasure>(documentId, "Heartrate") .Get().Single(); Assert.Equal(59d, val.Value.HeartRate); Assert.Equal("watches/fitbit", val.Tag); Assert.Equal(baseline, val.Timestamp, RavenTestHelper.DateTimeComparer.Instance); } } }
public async Task CanCreateSimpleTimeSeriesAsync() { using (var store = GetDocumentStore()) { var baseline = RavenTestHelper.UtcToday; using (var session = store.OpenAsyncSession()) { await session.StoreAsync(new { Name = "Oren" }, "users/ayende"); var measure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline.AddMinutes(1), Value = new HeartRateMeasure { HeartRate = 59d }, Tag = "watches/fitbit" }; var ts = session.TimeSeriesFor <HeartRateMeasure>("users/ayende"); ts.Append(measure); await session.SaveChangesAsync(); } using (var session = store.OpenAsyncSession()) { var result = await session.TimeSeriesFor <HeartRateMeasure>("users/ayende").GetAsync(); var val = result.Single(); Assert.Equal(59d, val.Value.HeartRate); Assert.Equal("watches/fitbit", val.Tag); Assert.Equal(baseline.AddMinutes(1), val.Timestamp, RavenTestHelper.DateTimeComparer.Instance); } } }
internal async Task <TimeSeriesEntry <TEntry>[]> GetTypedFromCache <TEntry>(DateTime?from, DateTime?to, Action <ITimeSeriesIncludeBuilder> includes, int start, int pageSize, CancellationToken token = default) where TEntry : new() { // RavenDB-16060 // Typed TimeSeries results need special handling when served from cache // since we cache the results untyped var resultToUser = await ServeFromCache(from ?? DateTime.MinValue, to ?? DateTime.MaxValue, start, pageSize, includes, token) .ConfigureAwait(false); var asList = resultToUser.ToList(); if (asList.Count == 0) { return(Array.Empty <TimeSeriesEntry <TEntry> >()); } var result = new TimeSeriesEntry <TEntry> [asList.Count]; for (var index = 0; index < asList.Count; index++) { var timeSeriesEntry = new TimeSeriesEntry <TEntry>(); var item = asList[index]; timeSeriesEntry.IsRollup = item.IsRollup; timeSeriesEntry.Timestamp = item.Timestamp; timeSeriesEntry.Tag = item.Tag; timeSeriesEntry.Value = TimeSeriesValuesHelper.SetMembers <TEntry>(item.Values, item.IsRollup); timeSeriesEntry.Values = item.Values; result[index] = timeSeriesEntry; } return(result); }
public void Append(TimeSeriesEntry <TValues> entry) { _asyncSessionTimeSeries.Append(entry.Timestamp, entry.Value, entry.Tag); }
public void CanStoreAndReadMultipleTimeseriesForDifferentDocuments() { using (var store = GetDocumentStore()) { var baseline = RavenTestHelper.UtcToday; const string documentId1 = "users/ayende"; const string documentId2 = "users/grisha"; using (var bulkInsert = store.BulkInsert()) { bulkInsert.Store(new { Name = "Oren" }, documentId1); using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId1, "Heartrate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(1), new HeartRateMeasure { HeartRate = 59 }, "watches/fitbit"); } bulkInsert.Store(new { Name = "Grisha" }, documentId2); using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId2, "Heartrate")) { timeSeriesBulkInsert.Append(baseline.AddMinutes(1), new HeartRateMeasure { HeartRate = 59 }, "watches/fitbit"); } } using (var bulkInsert = store.BulkInsert()) { using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId1, "Heartrate")) { var messure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline.AddMinutes(2), Tag = "watches/fitbit", Value = new HeartRateMeasure { HeartRate = 61 } }; timeSeriesBulkInsert.Append(messure); } using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId2, "Heartrate")) { var measure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline.AddMinutes(2), Tag = "watches/fitbit", Value = new HeartRateMeasure { HeartRate = 61 } }; timeSeriesBulkInsert.Append(measure); } using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId1, "Heartrate")) { var measure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline.AddMinutes(3), Tag = "watches/apple-watch", Value = new HeartRateMeasure { HeartRate = 62 } }; timeSeriesBulkInsert.Append(measure); } using (var timeSeriesBulkInsert = bulkInsert.TimeSeriesFor <HeartRateMeasure>(documentId2, "Heartrate")) { var measure = new TimeSeriesEntry <HeartRateMeasure> { Timestamp = baseline.AddMinutes(3), Tag = "watches/apple-watch", Value = new HeartRateMeasure { HeartRate = 62 } }; timeSeriesBulkInsert.Append(measure); } } using (var session = store.OpenSession()) { var vals = session.TimeSeriesFor <HeartRateMeasure>(documentId1, "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue) .ToList(); ValidateValues(); vals = session.TimeSeriesFor <HeartRateMeasure>(documentId2, "Heartrate") .Get(DateTime.MinValue, DateTime.MaxValue) .ToList(); ValidateValues(); void ValidateValues() { Assert.Equal(3, vals.Count); Assert.Equal(59, vals[0].Value.HeartRate); Assert.Equal("watches/fitbit", vals[0].Tag); Assert.Equal(baseline.AddMinutes(1), vals[0].Timestamp, RavenTestHelper.DateTimeComparer.Instance); Assert.Equal(61, vals[1].Value.HeartRate); Assert.Equal("watches/fitbit", vals[1].Tag); Assert.Equal(baseline.AddMinutes(2), vals[1].Timestamp, RavenTestHelper.DateTimeComparer.Instance); Assert.Equal(62, vals[2].Value.HeartRate); Assert.Equal("watches/apple-watch", vals[2].Tag); Assert.Equal(baseline.AddMinutes(3), vals[2].Timestamp, RavenTestHelper.DateTimeComparer.Instance); } } } }
public void Append(TimeSeriesEntry <TValues> entry) { Append(entry.Timestamp, entry.Value, entry.Tag); }
void ISessionDocumentTypedAppendTimeSeriesBase <TValues> .Append(TimeSeriesEntry <TValues> entry) { _asyncSessionTimeSeries.Append(entry.Timestamp, entry.Value, entry.Tag); }
public Task AppendAsync(TimeSeriesEntry <TValues> entry) { return(AppendAsync(entry.Timestamp, entry.Value, entry.Tag)); }
public void Append(TimeSeriesEntry <TValues> entry) { AsyncHelpers.RunSync(() => AppendAsync(entry)); }