diff --git a/storage/message/message.go b/storage/message/message.go index bcb6b8f..025a0e5 100644 --- a/storage/message/message.go +++ b/storage/message/message.go @@ -6,10 +6,22 @@ import ( "git.sr.ht/~cco/go-scopes/storage/tracking" ) +type message struct { + tracking.Track +} + +func MakeMessage(t *tracking.TrackTemplate) tracking.Track { + if t.Head["domain"] == "" { + t.Head["domain"] = "scopes" + } + return &message{tracking.MakeTrack(t)} +} + func Messages(db *sql.Storage) *tracking.Container { return &tracking.Container{ - TableName: "messages", - HeadFields: []string{"domain", "action", "class", "item"}, + ItemFactory: MakeMessage, + TableName: "messages", + HeadFields: []string{"domain", "action", "class", "item"}, Indexes: [][]string{ []string{"domain", "action", "class", "item"}, []string{"domain", "class", "item"}, diff --git a/storage/tracking/tracking.go b/storage/tracking/tracking.go index 90cd0a4..f3fca2d 100644 --- a/storage/tracking/tracking.go +++ b/storage/tracking/tracking.go @@ -104,10 +104,13 @@ func Tracks(db *sql.Storage) *Container { func (cont *Container) New(headValues lib.StrSlice, data lib.Map) Track { head := lib.StrMap{} for i, k := range cont.HeadFields { + if i >= len(headValues) { + break + } head[k] = headValues[i] } //tr := &track{head: head, data: data} - tr := cont.ItemFactory(&TrackTemplate{Head: head, Data: data}) + tr := cont.ItemFactory(&TrackTemplate{Head: head, Data: data, Container: cont}) cont.insert(tr) return tr } @@ -142,10 +145,7 @@ 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, Container: cont}) - //tr.trackId = trid - //tr.timeStamp = ts - //tr.container = cont + tr.Update(&TrackTemplate{TrackId: trid, TimeStamp: ts}) return trid } return 0 diff --git a/tests/storage_test.go b/tests/storage_test.go index d1fd377..fc9380a 100644 --- a/tests/storage_test.go +++ b/tests/storage_test.go @@ -79,8 +79,8 @@ func MessageTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) { //msgstore.StoreDB(db, msg) cont := message.Messages(db) cont.CreateTable() - //msg := cont.New(lib.StrSlice("", "data"), lib.Map{}) - //t.AssertEqual(msg.TrackId(), lib.Ident(1)) + msg := cont.New(lib.StrSlice{"", "data"}, lib.Map{}) + t.AssertEqual(msg.TrackId(), lib.Ident(1)) } func resetSqlite(db *sql.Storage) {