transparent use of Track interface OK
This commit is contained in:
parent
4db9a95cd7
commit
601ca4715a
2 changed files with 20 additions and 19 deletions
|
@ -14,12 +14,12 @@ func Message(tr *tracking.BaseTrack) *message {
|
|||
return &message{tr}
|
||||
}
|
||||
|
||||
func MakeMessage(c *tracking.Container, h ...string) *tracking.BaseTrack {
|
||||
func MakeMessage(c *tracking.Container, h ...string) tracking.Track {
|
||||
h = append(h, "") // make sure at least domain is there
|
||||
if h[0] == "" {
|
||||
h[0] = "scopes"
|
||||
}
|
||||
return tracking.MakeTrack(c, h...)
|
||||
return Message(tracking.MakeBaseTrack(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 Message(cont.NewTrack(h, nil))
|
||||
return cont.NewTrack(h, nil).(*message)
|
||||
}
|
||||
|
||||
// message store action handler
|
||||
|
|
|
@ -17,10 +17,7 @@ import (
|
|||
)
|
||||
|
||||
type ContFactory func(*sql.Storage) *Container
|
||||
type ItemFactory func(*Container, ...string) *track
|
||||
|
||||
type Adapted interface{}
|
||||
type AdapterFactory func(*track) Adapted
|
||||
type ItemFactory func(*Container, ...string) Track
|
||||
|
||||
type Track interface {
|
||||
TrackId() lib.Ident
|
||||
|
@ -47,7 +44,7 @@ type track struct {
|
|||
|
||||
type BaseTrack = track
|
||||
|
||||
func MakeTrack(cont *Container, h ...string) *track {
|
||||
func MakeBaseTrack(cont *Container, h ...string) *track {
|
||||
tr := track{
|
||||
head: lib.StrMap{},
|
||||
data: lib.Map{},
|
||||
|
@ -57,6 +54,10 @@ func MakeTrack(cont *Container, h ...string) *track {
|
|||
return &tr
|
||||
}
|
||||
|
||||
func MakeTrack(cont *Container, h ...string) Track {
|
||||
return MakeBaseTrack(cont, h...)
|
||||
}
|
||||
|
||||
func (tr *track) Base() *BaseTrack {
|
||||
return tr
|
||||
}
|
||||
|
@ -199,7 +200,7 @@ func (spec *querySpec) setup(cont *Container) {
|
|||
spec.Cont = cont
|
||||
}
|
||||
|
||||
func (cont *Container) Get(id lib.Ident) *track {
|
||||
func (cont *Container) Get(id lib.Ident) Track {
|
||||
quSpec := &querySpec{
|
||||
Qucols: lib.StrSlice{"trackid"},
|
||||
Quvals: []any{id},
|
||||
|
@ -207,7 +208,7 @@ func (cont *Container) Get(id lib.Ident) *track {
|
|||
return cont.QueryOne(quSpec)
|
||||
}
|
||||
|
||||
func (cont *Container) QueryLast(hv ...string) *track {
|
||||
func (cont *Container) QueryLast(hv ...string) Track {
|
||||
quSpec := &querySpec{
|
||||
Headvals: hv,
|
||||
Limit: 1,
|
||||
|
@ -216,11 +217,11 @@ func (cont *Container) QueryLast(hv ...string) *track {
|
|||
return cont.QueryOne(quSpec)
|
||||
}
|
||||
|
||||
func (cont *Container) QueryOne(quSpec *querySpec) *track {
|
||||
var tr *track
|
||||
func (cont *Container) QueryOne(quSpec *querySpec) Track {
|
||||
var tr Track
|
||||
proc := func(r *sql.Rows) error {
|
||||
tr = cont.ItemFactory(cont)
|
||||
return tr.ScanP(r)
|
||||
return tr.Base().ScanP(r)
|
||||
}
|
||||
quSpec.setup(cont)
|
||||
sql := storage.BuildSql(SqlSelect, quSpec)
|
||||
|
@ -228,11 +229,11 @@ func (cont *Container) QueryOne(quSpec *querySpec) *track {
|
|||
return tr
|
||||
}
|
||||
|
||||
func (cont *Container) Query(quSpec *querySpec) []*track {
|
||||
var trs []*track
|
||||
func (cont *Container) Query(quSpec *querySpec) []Track {
|
||||
var trs []Track
|
||||
proc := func(r *sql.Rows) error {
|
||||
tr := cont.ItemFactory(cont)
|
||||
err := tr.ScanP(r)
|
||||
err := tr.Base().ScanP(r)
|
||||
if err == nil {
|
||||
trs = append(trs, tr)
|
||||
}
|
||||
|
@ -244,9 +245,9 @@ func (cont *Container) Query(quSpec *querySpec) []*track {
|
|||
return trs
|
||||
}
|
||||
|
||||
func (cont *Container) NewTrack(h []string, data lib.Map) *track {
|
||||
func (cont *Container) NewTrack(h []string, data lib.Map) Track {
|
||||
tr := cont.ItemFactory(cont, h...)
|
||||
tr.data = data
|
||||
tr.SetData(data)
|
||||
cont.Insert(tr)
|
||||
return tr
|
||||
}
|
||||
|
@ -343,7 +344,7 @@ func GetContainerDef(p string) *ContDef {
|
|||
return container_registry[p]
|
||||
}
|
||||
|
||||
func Get(db *sql.Storage, uid string) *track {
|
||||
func Get(db *sql.Storage, uid string) Track {
|
||||
parts := strings.Split(uid, "-")
|
||||
cd := GetContainerDef(parts[0])
|
||||
cont := cd.ContFactory(db)
|
||||
|
|
Loading…
Add table
Reference in a new issue