Work in progress: Container.QueryLast()

This commit is contained in:
Helmut Merz 2024-04-12 10:41:10 +02:00
parent b01887d412
commit cad0da95e1
2 changed files with 25 additions and 16 deletions

View file

@ -5,7 +5,6 @@ package tracking
import (
sqllib "database/sql"
"encoding/json"
"fmt"
"time"
lib "git.sr.ht/~cco/go-scopes"
@ -100,32 +99,41 @@ func (cont *Container) Get(id lib.Ident) *Track {
tr = cont.ItemFactory(cont)
return tr.ScanP(r)
}
qu := lib.Map{
quData := lib.Map{
"schema": db.Schema,
"tablename": cont.TableName,
"scols": append(cont.HeadFields, "timestamp", "data", "trackid"),
"qucols": lib.StrSlice{"trackid"},
}
sql := storage.BuildSql(SqlSelect, qu)
print(sql)
sql := storage.BuildSql(SqlSelect, quData)
db.Query(proc, sql, id)
fmt.Printf("%+v\n", *tr)
return tr
}
func (cont *Container) Query(headValues lib.StrSlice) *Track {
func (cont *Container) QueryLast(hv lib.StrSlice) *Track {
db := cont.Storage
data := lib.Map{
var tr *Track
proc := func(r *sql.Rows) error {
tr = cont.ItemFactory(cont)
return tr.ScanP(r)
}
var qucols lib.StrSlice
var quvals []any
for i, k := range hv {
if k != "" {
qucols = append(qucols, cont.HeadFields[i])
quvals = append(quvals, k)
}
}
quData := lib.Map{
"schema": db.Schema,
"tablename": cont.TableName,
"scols": lib.StrSlice{"taskid", "data"},
"qucols": lib.StrSlice{"taskid", "username"},
"scols": append(cont.HeadFields, "timestamp", "data", "trackid"),
"qucols": qucols,
"ordcols": lib.StrSlice{"timestamp"},
}
sql := storage.BuildSql(SqlSelect, data)
//print(sql)
_ = sql
tr := cont.ItemFactory(cont)
sql := storage.BuildSql(SqlSelect, quData)
db.Query(proc, sql, quvals...)
return tr
}

View file

@ -71,10 +71,11 @@ func TrackingTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
track := cont.NewTrack(lib.StrSlice{"t01", "john"}, nil)
t.AssertEqual(track.TrackId(), lib.Ident(1))
t.AssertEqual(track.TimeStamp.Year(), time.Now().Year())
//fmt.Printf("%+v\n", track.TimeStamp())
tr2 := cont.Get(1)
//tr2 := cont.Query(lib.StrSlice{"", "john"})
_ = tr2
//fmt.Printf("%+v\n", tr2.TimeStamp())
t.AssertEqual(tr2.Head["userName"], "john")
tr3 := cont.QueryLast(lib.StrSlice{"", "john"})
t.AssertEqual(tr3.Head["taskId"], "t01")
}
func MessageTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {