From d6dce700a4979c47435eb3ff5b3a91a0cd921bcb Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 3 Apr 2024 09:53:56 +0200 Subject: [PATCH] make creation of tracks and messages more generic --- storage/message/message.go | 9 +++++++++ storage/tracking/tracking.go | 7 ++++++- tests/storage_test.go | 6 ++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/storage/message/message.go b/storage/message/message.go index 025a0e5..e2becc0 100644 --- a/storage/message/message.go +++ b/storage/message/message.go @@ -17,6 +17,10 @@ func MakeMessage(t *tracking.TrackTemplate) tracking.Track { return &message{tracking.MakeTrack(t)} } +func (msg *message) Domain() string { + return msg.Head()["domain"] +} + func Messages(db *sql.Storage) *tracking.Container { return &tracking.Container{ ItemFactory: MakeMessage, @@ -30,6 +34,11 @@ func Messages(db *sql.Storage) *tracking.Container { } } +func New(cont *tracking.Container, headValues lib.StrSlice, data lib.Map) *message { + tr := cont.NewTrack(headValues, data) + return tr.(*message) +} + // message store action handler func Store(act lib.Action) bool { diff --git a/storage/tracking/tracking.go b/storage/tracking/tracking.go index f3fca2d..23eaf78 100644 --- a/storage/tracking/tracking.go +++ b/storage/tracking/tracking.go @@ -101,7 +101,12 @@ func Tracks(db *sql.Storage) *Container { } } -func (cont *Container) New(headValues lib.StrSlice, data lib.Map) Track { +func New(cont *Container, headValues lib.StrSlice, data lib.Map) *track { + tr := cont.NewTrack(headValues, data) + return tr.(*track) +} + +func (cont *Container) NewTrack(headValues lib.StrSlice, data lib.Map) Track { head := lib.StrMap{} for i, k := range cont.HeadFields { if i >= len(headValues) { diff --git a/tests/storage_test.go b/tests/storage_test.go index fc9380a..6d971b8 100644 --- a/tests/storage_test.go +++ b/tests/storage_test.go @@ -68,7 +68,7 @@ func BaseTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) { func TrackingTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) { cont := tracking.Tracks(db) cont.CreateTable() - track := cont.New(lib.StrSlice{"t01", "john"}, lib.Map{}) + track := tracking.New(cont, lib.StrSlice{"t01", "john"}, lib.Map{}) t.AssertEqual(track.TrackId(), lib.Ident(1)) t.AssertEqual(track.TimeStamp().Year(), time.Now().Year()) //fmt.Printf("%+v\n", track.TimeStamp()) @@ -79,8 +79,10 @@ 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{}) + //msg := cont.New(lib.StrSlice{"", "data"}, lib.Map{}).(*message.Message) + msg := message.New(cont, lib.StrSlice{"", "data"}, lib.Map{}) t.AssertEqual(msg.TrackId(), lib.Ident(1)) + t.AssertEqual(msg.Domain(), "scopes") } func resetSqlite(db *sql.Storage) {