Skip to content

Commit 7c8f8ea

Browse files
authored
add meta for wide time series (#17)
1 parent 69ee396 commit 7c8f8ea

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

duck/duckdb.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,14 @@ func resultsToFrame(name string, res string, f *sdk.Frame, frames []*sdk.Frame)
223223
}
224224
f.Fields = frame.Fields
225225
f.Meta = frame.Meta
226+
return nil
227+
}
228+
229+
if kind == sdk.TimeSeriesTypeWide {
230+
if f.Meta == nil {
231+
f.Meta = &sdk.FrameMeta{}
232+
}
233+
f.Meta.Type = sdk.FrameTypeTimeSeriesWide
226234
}
227235

228236
// TODO - appending to field names for now

duck/duckdb_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,36 @@ func TestTimeSeries(t *testing.T) {
284284
assert.Contains(t, txt, "Type: []time.Time")
285285
}
286286

287+
func TestTimeSeriesWide(t *testing.T) {
288+
db := NewInMemoryDB()
289+
290+
tt := "2024-02-23 09:01:54"
291+
dd, err := dateparse.ParseAny(tt)
292+
assert.Nil(t, err)
293+
294+
var values = []time.Time{dd}
295+
timeField := data.NewField("time", nil, values)
296+
valueField := data.NewField("value", nil, []*float64{new(float64)})
297+
298+
frame := data.NewFrame("foo", timeField, valueField)
299+
frame.RefID = "foo"
300+
301+
frames := []*data.Frame{frame}
302+
303+
model := &data.Frame{}
304+
err = db.QueryFramesInto("foo", "select * from foo", frames, model)
305+
assert.Nil(t, err)
306+
307+
assert.Equal(t, data.FrameTypeTimeSeriesWide, model.Meta.Type)
308+
309+
assert.Equal(t, 1, model.Rows())
310+
txt, err := model.StringTable(-1, -1)
311+
assert.Nil(t, err)
312+
313+
fmt.Printf("GOT: %s", txt)
314+
assert.Contains(t, txt, "Type: []*time.Time")
315+
}
316+
287317
func TestLabels(t *testing.T) {
288318
db := NewInMemoryDB()
289319

0 commit comments

Comments
 (0)