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) {
|
func StoreDB(db *sql.Storage, msg lib.Message) {
|
||||||
cont := Messages(db)
|
cont := Messages(db)
|
||||||
|
// cont.Save(PrepareMessage(cont, msg))
|
||||||
cont.Save(cont.ItemFactory(cont))
|
cont.Save(cont.ItemFactory(cont))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ package tracking
|
||||||
import (
|
import (
|
||||||
sqllib "database/sql"
|
sqllib "database/sql"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
lib "git.sr.ht/~cco/go-scopes"
|
lib "git.sr.ht/~cco/go-scopes"
|
||||||
|
@ -36,7 +37,6 @@ func (tr *Track) Container() *Container {
|
||||||
func MakeTrack(cont *Container, h ...string) *Track {
|
func MakeTrack(cont *Container, h ...string) *Track {
|
||||||
tr := Track{
|
tr := Track{
|
||||||
Head: lib.StrMap{},
|
Head: lib.StrMap{},
|
||||||
Data: lib.Map{},
|
|
||||||
container: cont,
|
container: cont,
|
||||||
}
|
}
|
||||||
tr.SetHead(h...)
|
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
|
// basic container implementation
|
||||||
|
|
||||||
type ContDef struct {
|
type ContDef struct {
|
||||||
|
@ -74,17 +92,27 @@ func Tracks(db *sql.Storage) *Container {
|
||||||
|
|
||||||
func (cont *Container) Get(id lib.Ident) *Track {
|
func (cont *Container) Get(id lib.Ident) *Track {
|
||||||
db := cont.Storage
|
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{
|
qu := lib.Map{
|
||||||
"schema": db.Schema,
|
"schema": db.Schema,
|
||||||
"tablename": cont.TableName,
|
"tablename": cont.TableName,
|
||||||
"scols": append(cont.HeadFields, "timestamp", "data"),
|
"scols": append(cont.HeadFields, "timestamp", "data"),
|
||||||
"qucols": lib.StrSlice{"taskid"},
|
"qucols": lib.StrSlice{"trackid"},
|
||||||
}
|
}
|
||||||
sql := storage.BuildSql(SqlSelect, qu)
|
sql := storage.BuildSql(SqlSelect, qu)
|
||||||
print(sql)
|
print(sql)
|
||||||
var h []string
|
//tr := cont.ItemFactory(cont)
|
||||||
tr := cont.ItemFactory(cont, h...)
|
db.Query(processTracks, sql, id)
|
||||||
return tr
|
if len(trs) > 0 {
|
||||||
|
return trs[0]
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Query(headValues lib.StrSlice) *Track {
|
func (cont *Container) Query(headValues lib.StrSlice) *Track {
|
||||||
|
@ -143,7 +171,6 @@ func (cont *Container) Insert(tr *Track) lib.Ident {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := db.Query(proc, sql, values...); err == nil {
|
if err := db.Query(proc, sql, values...); err == nil {
|
||||||
//tr.Update(&TrackTemplate{TrackId: trid, TimeStamp: ts})
|
|
||||||
tr.trackId = trid
|
tr.trackId = trid
|
||||||
tr.TimeStamp = ts
|
tr.TimeStamp = ts
|
||||||
return trid
|
return trid
|
||||||
|
|
Loading…
Add table
Reference in a new issue