diff --git a/storage/tracking/tracking.go b/storage/tracking/tracking.go index c4d7484..c55e524 100644 --- a/storage/tracking/tracking.go +++ b/storage/tracking/tracking.go @@ -73,6 +73,20 @@ func (tr *track) SetTimeStamp(ts *time.Time) { } func (tr *track) Update(h lib.StrSlice, d lib.Map, ts *time.Time) { + for i, k := range tr.container.HeadFields { + if i >= len(h) { + break + } + if h[i] != "" { + tr.head[k] = h[i] + } + } + if d != nil { + tr.data = d + } + if ts != nil { + tr.timeStamp = ts + } } // basic container implementation @@ -93,6 +107,21 @@ func Tracks(db *sql.Storage) *Container { return &Container{container_definition, db} } +func (cont *Container) Get(id lib.Ident) Track { + db := cont.Storage + qu := lib.Map{ + "schema": db.Schema, + "tablename": cont.TableName, + "scols": append(cont.HeadFields, "timestamp", "data"), + "qucols": lib.StrSlice{"taskid"}, + } + sql := storage.BuildSql(SqlSelect, qu) + print(sql) + var h []string + tr := cont.ItemFactory(cont, h...) + return tr +} + func (cont *Container) Query(headValues lib.StrSlice) Track { db := cont.Storage data := lib.Map{ @@ -103,7 +132,8 @@ func (cont *Container) Query(headValues lib.StrSlice) Track { "ordcols": lib.StrSlice{"timestamp"}, } sql := storage.BuildSql(SqlSelect, data) - print(sql) + //print(sql) + _ = sql tr := cont.ItemFactory(cont) return tr } @@ -111,7 +141,7 @@ func (cont *Container) Query(headValues lib.StrSlice) Track { func (cont *Container) NewTrack(h []string, data lib.Map) Track { tr := cont.ItemFactory(cont, h...) //tr.SetData(data) - cont.insert(tr) + cont.Insert(tr) return tr } @@ -119,7 +149,7 @@ func (cont *Container) Save(t Track) lib.Ident { return 0 } -func (cont *Container) insert(tr Track) lib.Ident { +func (cont *Container) Insert(tr Track) lib.Ident { var columns []string var values []any head := tr.Head() diff --git a/tests/storage_test.go b/tests/storage_test.go index 3f33f84..6c896d5 100644 --- a/tests/storage_test.go +++ b/tests/storage_test.go @@ -72,7 +72,8 @@ func TrackingTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) { t.AssertEqual(track.TrackId(), lib.Ident(1)) t.AssertEqual(track.TimeStamp().Year(), time.Now().Year()) //fmt.Printf("%+v\n", track.TimeStamp()) - tr2 := cont.Query(lib.StrSlice{"", "john"}) + tr2 := cont.Get(1) + //tr2 := cont.Query(lib.StrSlice{"", "john"}) _ = tr2 }