add Track interface; remove adapter stuff

This commit is contained in:
Helmut Merz 2024-05-02 11:56:45 +02:00
parent 802ee6a4a6
commit b38d22f1bb
2 changed files with 16 additions and 14 deletions

View file

@ -10,7 +10,7 @@ type message struct {
*tracking.BaseTrack
}
func Message(tr *tracking.BaseTrack) tracking.Adapted {
func Message(tr *tracking.BaseTrack) *message {
return &message{tr}
}
@ -19,7 +19,7 @@ func MakeMessage(c *tracking.Container, h ...string) *tracking.BaseTrack {
if h[0] == "" {
h[0] = "scopes"
}
return tracking.MakeTrack(c, h...).SetAdapterFactory(Message)
return tracking.MakeTrack(c, h...)
}
func (msg *message) Base() *tracking.BaseTrack {
@ -37,7 +37,7 @@ func Messages(db *sql.Storage) *tracking.Container {
}
func New(cont *tracking.Container, h ...string) *message {
return tracking.Adapt[*message](cont.NewTrack(h, nil))
return Message(cont.NewTrack(h, nil))
}
// message store action handler

View file

@ -22,6 +22,19 @@ type ItemFactory func(*Container, ...string) *track
type Adapted interface{}
type AdapterFactory func(*track) Adapted
type Track interface {
TrackId() lib.Ident
Head() lib.StrMap
TimeStamp() *time.Time
Data() lib.Map
Container() *Container
Uid() string
SetHead(...string)
SetTimeStamp(*time.Time)
SetData(lib.Map)
Base() *BaseTrack
}
// basic track implementation
type track struct {
@ -30,7 +43,6 @@ type track struct {
timeStamp *time.Time
data lib.Map
container *Container
adapter AdapterFactory
}
type BaseTrack = track
@ -40,7 +52,6 @@ func MakeTrack(cont *Container, h ...string) *track {
head: lib.StrMap{},
data: lib.Map{},
container: cont,
adapter: func(tr *track) Adapted { return tr },
}
tr.SetHead(h...)
return &tr
@ -117,15 +128,6 @@ func (tr *track) ScanP(rows *sql.Rows) error {
return err
}
func (tr *track) SetAdapterFactory(af AdapterFactory) *track {
tr.adapter = af
return tr
}
func Adapt[T Adapted](tr *track) T {
return tr.adapter(tr).(T)
}
// basic container implementation
type ContDef struct {