diff --git a/storage/tracking/sql_code.go b/storage/tracking/sql_code.go index 3f77948..27f63ee 100644 --- a/storage/tracking/sql_code.go +++ b/storage/tracking/sql_code.go @@ -29,13 +29,12 @@ create index idx_{{ $.tablename }}_ts on {{ $tablename }} (timestamp); ` sql_insert = ` -{{- $tablename := or (and .schema (printf "%s.%s" .schema .tablename)) .tablename -}} -insert into {{ $tablename }} ( - {{- range $j, $c := .columns -}} +insert into {{ .Table }} ( + {{- range $j, $c := .Scols -}} {{- if ne $j 0 -}}, {{ end }}{{ toLower $c }} {{- end -}}) values ( - {{- range $j, $c := .columns -}} + {{- range $j, $c := .Scols -}} {{- if ne $j 0 -}}, {{ end }}${{ add1 $j }} {{- end -}}) returning trackid, timestamp` diff --git a/storage/tracking/tracking.go b/storage/tracking/tracking.go index 9117388..a15c0ea 100644 --- a/storage/tracking/tracking.go +++ b/storage/tracking/tracking.go @@ -189,7 +189,7 @@ func (cont *Container) Query(quSpec *querySpec) []*Track { func (cont *Container) NewTrack(h []string, data lib.Map) *Track { tr := cont.ItemFactory(cont, h...) - //tr.SetData(data) + tr.Data = data cont.Insert(tr) return tr } @@ -199,47 +199,36 @@ func (cont *Container) Save(t *Track) lib.Ident { } func (cont *Container) Insert(tr *Track) lib.Ident { - var columns []string + db := cont.Storage + quSpec := &querySpec{ + Scols: append(cont.HeadFields, "Data"), + } + quSpec.setup(cont) + sql := storage.BuildSql(SqlInsert, quSpec) var values []any for _, k := range cont.HeadFields { - columns = append(columns, k) values = append(values, tr.Head[k]) } - columns = append(columns, "Data") b, _ := json.Marshal(tr.Data) values = append(values, b) - db := cont.Storage - data := lib.Map{ - "schema": db.Schema, - "tablename": cont.TableName, - "columns": columns, - } - sql := storage.BuildSql(SqlInsert, data) - var trid lib.Ident - var ts *time.Time var tsstr string proc := func(r *sqllib.Rows) error { - err := r.Scan(&trid, &ts) - if err != nil { - err = r.Scan(&trid, &tsstr) - ts = ParseDateTime(tsstr) - } + err := r.Scan(&tr.trackId, &tsstr) + tr.TimeStamp = ParseDateTime(tsstr) return err } if err := db.Query(proc, sql, values...); err == nil { - tr.trackId = trid - tr.TimeStamp = ts - return trid + return tr.trackId } return 0 } func ParseDateTime(inp string) *time.Time { - ts, err := time.Parse("2006-01-02 15:04:05", inp) + ts, err := time.Parse("2006-01-02T15:04:05-07:00", inp) if err == nil { return &ts } - ts, err = time.Parse("2006-01-02T15:04:05-07:00", inp) + ts, err = time.Parse("2006-01-02 15:04:05", inp) if err == nil { return &ts }