work in progress: Container.Get() - process query result -> Track
This commit is contained in:
parent
8401f4d51e
commit
9a57630a27
2 changed files with 34 additions and 6 deletions
|
@ -46,6 +46,7 @@ func Store(act lib.Action) bool {
|
|||
|
||||
func StoreDB(db *sql.Storage, msg lib.Message) {
|
||||
cont := Messages(db)
|
||||
// cont.Save(PrepareMessage(cont, msg))
|
||||
cont.Save(cont.ItemFactory(cont))
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ package tracking
|
|||
import (
|
||||
sqllib "database/sql"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
lib "git.sr.ht/~cco/go-scopes"
|
||||
|
@ -36,7 +37,6 @@ func (tr *Track) Container() *Container {
|
|||
func MakeTrack(cont *Container, h ...string) *Track {
|
||||
tr := Track{
|
||||
Head: lib.StrMap{},
|
||||
Data: lib.Map{},
|
||||
container: cont,
|
||||
}
|
||||
tr.SetHead(h...)
|
||||
|
@ -54,6 +54,24 @@ func (tr *Track) SetHead(h ...string) {
|
|||
}
|
||||
}
|
||||
|
||||
func (tr *Track) ScanP(rows *sql.Rows) error {
|
||||
tr.Head = lib.StrMap{}
|
||||
var d []any
|
||||
for _, _ = range tr.container.HeadFields {
|
||||
//tr.Head[k] = ""
|
||||
var hv string
|
||||
d = append(d, &hv)
|
||||
}
|
||||
var ts string
|
||||
d = append(d, &ts)
|
||||
var rd string
|
||||
d = append(d, &rd)
|
||||
err := rows.Scan(d...)
|
||||
fmt.Printf("%+v\n", d)
|
||||
fmt.Printf("%+v, %+v, %+v, %+v\n", *d[0].(*string), *d[1].(*string), *d[2].(*string), *d[3].(*string))
|
||||
return err
|
||||
}
|
||||
|
||||
// basic container implementation
|
||||
|
||||
type ContDef struct {
|
||||
|
@ -74,17 +92,27 @@ func Tracks(db *sql.Storage) *Container {
|
|||
|
||||
func (cont *Container) Get(id lib.Ident) *Track {
|
||||
db := cont.Storage
|
||||
var trs []*Track
|
||||
processTracks := func(r *sql.Rows) error {
|
||||
tr := cont.ItemFactory(cont)
|
||||
err := tr.ScanP(r)
|
||||
trs = append(trs, tr)
|
||||
return err
|
||||
}
|
||||
qu := lib.Map{
|
||||
"schema": db.Schema,
|
||||
"tablename": cont.TableName,
|
||||
"scols": append(cont.HeadFields, "timestamp", "data"),
|
||||
"qucols": lib.StrSlice{"taskid"},
|
||||
"qucols": lib.StrSlice{"trackid"},
|
||||
}
|
||||
sql := storage.BuildSql(SqlSelect, qu)
|
||||
print(sql)
|
||||
var h []string
|
||||
tr := cont.ItemFactory(cont, h...)
|
||||
return tr
|
||||
//tr := cont.ItemFactory(cont)
|
||||
db.Query(processTracks, sql, id)
|
||||
if len(trs) > 0 {
|
||||
return trs[0]
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cont *Container) Query(headValues lib.StrSlice) *Track {
|
||||
|
@ -143,7 +171,6 @@ func (cont *Container) Insert(tr *Track) lib.Ident {
|
|||
return err
|
||||
}
|
||||
if err := db.Query(proc, sql, values...); err == nil {
|
||||
//tr.Update(&TrackTemplate{TrackId: trid, TimeStamp: ts})
|
||||
tr.trackId = trid
|
||||
tr.TimeStamp = ts
|
||||
return trid
|
||||
|
|
Loading…
Add table
Reference in a new issue