use adapter (proxy) instead of type assertion for accessing specific methods

This commit is contained in:
Helmut Merz 2024-04-03 10:24:08 +02:00
parent d6dce700a4
commit 149520ff21
3 changed files with 7 additions and 10 deletions

View file

@ -10,11 +10,15 @@ type message struct {
tracking.Track tracking.Track
} }
func Message(tr tracking.Track) *message {
return &message{tr}
}
func MakeMessage(t *tracking.TrackTemplate) tracking.Track { func MakeMessage(t *tracking.TrackTemplate) tracking.Track {
if t.Head["domain"] == "" { if t.Head["domain"] == "" {
t.Head["domain"] = "scopes" t.Head["domain"] = "scopes"
} }
return &message{tracking.MakeTrack(t)} return tracking.MakeTrack(t)
} }
func (msg *message) Domain() string { func (msg *message) Domain() string {
@ -35,8 +39,7 @@ func Messages(db *sql.Storage) *tracking.Container {
} }
func New(cont *tracking.Container, headValues lib.StrSlice, data lib.Map) *message { func New(cont *tracking.Container, headValues lib.StrSlice, data lib.Map) *message {
tr := cont.NewTrack(headValues, data) return Message(cont.NewTrack(headValues, data))
return tr.(*message)
} }
// message store action handler // message store action handler

View file

@ -101,11 +101,6 @@ func Tracks(db *sql.Storage) *Container {
} }
} }
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 { func (cont *Container) NewTrack(headValues lib.StrSlice, data lib.Map) Track {
head := lib.StrMap{} head := lib.StrMap{}
for i, k := range cont.HeadFields { for i, k := range cont.HeadFields {

View file

@ -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) { func TrackingTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
cont := tracking.Tracks(db) cont := tracking.Tracks(db)
cont.CreateTable() cont.CreateTable()
track := tracking.New(cont, lib.StrSlice{"t01", "john"}, lib.Map{}) track := cont.NewTrack(lib.StrSlice{"t01", "john"}, lib.Map{})
t.AssertEqual(track.TrackId(), lib.Ident(1)) t.AssertEqual(track.TrackId(), lib.Ident(1))
t.AssertEqual(track.TimeStamp().Year(), time.Now().Year()) t.AssertEqual(track.TimeStamp().Year(), time.Now().Year())
//fmt.Printf("%+v\n", track.TimeStamp()) //fmt.Printf("%+v\n", track.TimeStamp())
@ -79,7 +79,6 @@ func MessageTest(t *testing.T, cfg *sql.Cfg, db *sql.Storage) {
//msgstore.StoreDB(db, msg) //msgstore.StoreDB(db, msg)
cont := message.Messages(db) cont := message.Messages(db)
cont.CreateTable() cont.CreateTable()
//msg := cont.New(lib.StrSlice{"", "data"}, lib.Map{}).(*message.Message)
msg := message.New(cont, lib.StrSlice{"", "data"}, lib.Map{}) msg := message.New(cont, lib.StrSlice{"", "data"}, lib.Map{})
t.AssertEqual(msg.TrackId(), lib.Ident(1)) t.AssertEqual(msg.TrackId(), lib.Ident(1))
t.AssertEqual(msg.Domain(), "scopes") t.AssertEqual(msg.Domain(), "scopes")