make track definition private
This commit is contained in:
parent
12dbfe17ab
commit
802ee6a4a6
2 changed files with 42 additions and 32 deletions
|
@ -7,14 +7,14 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type message struct {
|
type message struct {
|
||||||
*tracking.Track
|
*tracking.BaseTrack
|
||||||
}
|
}
|
||||||
|
|
||||||
func Message(tr *tracking.Track) tracking.Adapted {
|
func Message(tr *tracking.BaseTrack) tracking.Adapted {
|
||||||
return &message{tr}
|
return &message{tr}
|
||||||
}
|
}
|
||||||
|
|
||||||
func MakeMessage(c *tracking.Container, h ...string) *tracking.Track {
|
func MakeMessage(c *tracking.Container, h ...string) *tracking.BaseTrack {
|
||||||
h = append(h, "") // make sure at least domain is there
|
h = append(h, "") // make sure at least domain is there
|
||||||
if h[0] == "" {
|
if h[0] == "" {
|
||||||
h[0] = "scopes"
|
h[0] = "scopes"
|
||||||
|
@ -22,6 +22,10 @@ func MakeMessage(c *tracking.Container, h ...string) *tracking.Track {
|
||||||
return tracking.MakeTrack(c, h...).SetAdapterFactory(Message)
|
return tracking.MakeTrack(c, h...).SetAdapterFactory(Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (msg *message) Base() *tracking.BaseTrack {
|
||||||
|
return msg.BaseTrack
|
||||||
|
}
|
||||||
|
|
||||||
func (msg *message) Domain() string {
|
func (msg *message) Domain() string {
|
||||||
return msg.Head()["domain"]
|
return msg.Head()["domain"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,14 +17,14 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type ContFactory func(*sql.Storage) *Container
|
type ContFactory func(*sql.Storage) *Container
|
||||||
type ItemFactory func(*Container, ...string) *Track
|
type ItemFactory func(*Container, ...string) *track
|
||||||
|
|
||||||
type Adapted interface{}
|
type Adapted interface{}
|
||||||
type AdapterFactory func(*Track) Adapted
|
type AdapterFactory func(*track) Adapted
|
||||||
|
|
||||||
// basic track implementation
|
// basic track implementation
|
||||||
|
|
||||||
type Track struct {
|
type track struct {
|
||||||
trackId lib.Ident
|
trackId lib.Ident
|
||||||
head lib.StrMap
|
head lib.StrMap
|
||||||
timeStamp *time.Time
|
timeStamp *time.Time
|
||||||
|
@ -33,42 +33,48 @@ type Track struct {
|
||||||
adapter AdapterFactory
|
adapter AdapterFactory
|
||||||
}
|
}
|
||||||
|
|
||||||
func MakeTrack(cont *Container, h ...string) *Track {
|
type BaseTrack = track
|
||||||
tr := Track{
|
|
||||||
|
func MakeTrack(cont *Container, h ...string) *track {
|
||||||
|
tr := track{
|
||||||
head: lib.StrMap{},
|
head: lib.StrMap{},
|
||||||
data: lib.Map{},
|
data: lib.Map{},
|
||||||
container: cont,
|
container: cont,
|
||||||
adapter: func(tr *Track) Adapted { return tr },
|
adapter: func(tr *track) Adapted { return tr },
|
||||||
}
|
}
|
||||||
tr.SetHead(h...)
|
tr.SetHead(h...)
|
||||||
return &tr
|
return &tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) TrackId() lib.Ident {
|
func (tr *track) Base() *BaseTrack {
|
||||||
|
return tr
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tr *track) TrackId() lib.Ident {
|
||||||
return tr.trackId
|
return tr.trackId
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) Head() lib.StrMap {
|
func (tr *track) Head() lib.StrMap {
|
||||||
return tr.head
|
return tr.head
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) TimeStamp() *time.Time {
|
func (tr *track) TimeStamp() *time.Time {
|
||||||
return tr.timeStamp
|
return tr.timeStamp
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) Data() lib.Map {
|
func (tr *track) Data() lib.Map {
|
||||||
return tr.data
|
return tr.data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) Container() *Container {
|
func (tr *track) Container() *Container {
|
||||||
return tr.container
|
return tr.container
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) Uid() string {
|
func (tr *track) Uid() string {
|
||||||
return fmt.Sprintf("%s-%d", tr.container.Prefix, tr.trackId)
|
return fmt.Sprintf("%s-%d", tr.container.Prefix, tr.trackId)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) SetHead(h ...string) {
|
func (tr *track) SetHead(h ...string) {
|
||||||
for i, k := range tr.container.HeadFields {
|
for i, k := range tr.container.HeadFields {
|
||||||
if i >= len(h) {
|
if i >= len(h) {
|
||||||
break
|
break
|
||||||
|
@ -79,15 +85,15 @@ func (tr *Track) SetHead(h ...string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) SetTimeStamp(ts *time.Time) {
|
func (tr *track) SetTimeStamp(ts *time.Time) {
|
||||||
tr.timeStamp = ts
|
tr.timeStamp = ts
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) SetData(data lib.Map) {
|
func (tr *track) SetData(data lib.Map) {
|
||||||
tr.data = data
|
tr.data = data
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) ScanP(rows *sql.Rows) error {
|
func (tr *track) ScanP(rows *sql.Rows) error {
|
||||||
tr.head = lib.StrMap{}
|
tr.head = lib.StrMap{}
|
||||||
var d []any
|
var d []any
|
||||||
for range tr.container.HeadFields {
|
for range tr.container.HeadFields {
|
||||||
|
@ -111,12 +117,12 @@ func (tr *Track) ScanP(rows *sql.Rows) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tr *Track) SetAdapterFactory(af AdapterFactory) *Track {
|
func (tr *track) SetAdapterFactory(af AdapterFactory) *track {
|
||||||
tr.adapter = af
|
tr.adapter = af
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func Adapt[T Adapted](tr *Track) T {
|
func Adapt[T Adapted](tr *track) T {
|
||||||
return tr.adapter(tr).(T)
|
return tr.adapter(tr).(T)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,7 +197,7 @@ func (spec *querySpec) setup(cont *Container) {
|
||||||
spec.Cont = cont
|
spec.Cont = cont
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Get(id lib.Ident) *Track {
|
func (cont *Container) Get(id lib.Ident) *track {
|
||||||
quSpec := &querySpec{
|
quSpec := &querySpec{
|
||||||
Qucols: lib.StrSlice{"trackid"},
|
Qucols: lib.StrSlice{"trackid"},
|
||||||
Quvals: []any{id},
|
Quvals: []any{id},
|
||||||
|
@ -199,7 +205,7 @@ func (cont *Container) Get(id lib.Ident) *Track {
|
||||||
return cont.QueryOne(quSpec)
|
return cont.QueryOne(quSpec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) QueryLast(hv ...string) *Track {
|
func (cont *Container) QueryLast(hv ...string) *track {
|
||||||
quSpec := &querySpec{
|
quSpec := &querySpec{
|
||||||
Headvals: hv,
|
Headvals: hv,
|
||||||
Limit: 1,
|
Limit: 1,
|
||||||
|
@ -208,8 +214,8 @@ func (cont *Container) QueryLast(hv ...string) *Track {
|
||||||
return cont.QueryOne(quSpec)
|
return cont.QueryOne(quSpec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) QueryOne(quSpec *querySpec) *Track {
|
func (cont *Container) QueryOne(quSpec *querySpec) *track {
|
||||||
var tr *Track
|
var tr *track
|
||||||
proc := func(r *sql.Rows) error {
|
proc := func(r *sql.Rows) error {
|
||||||
tr = cont.ItemFactory(cont)
|
tr = cont.ItemFactory(cont)
|
||||||
return tr.ScanP(r)
|
return tr.ScanP(r)
|
||||||
|
@ -220,8 +226,8 @@ func (cont *Container) QueryOne(quSpec *querySpec) *Track {
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Query(quSpec *querySpec) []*Track {
|
func (cont *Container) Query(quSpec *querySpec) []*track {
|
||||||
var trs []*Track
|
var trs []*track
|
||||||
proc := func(r *sql.Rows) error {
|
proc := func(r *sql.Rows) error {
|
||||||
tr := cont.ItemFactory(cont)
|
tr := cont.ItemFactory(cont)
|
||||||
err := tr.ScanP(r)
|
err := tr.ScanP(r)
|
||||||
|
@ -236,18 +242,18 @@ func (cont *Container) Query(quSpec *querySpec) []*Track {
|
||||||
return trs
|
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 := cont.ItemFactory(cont, h...)
|
||||||
tr.data = data
|
tr.data = data
|
||||||
cont.Insert(tr)
|
cont.Insert(tr)
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Save(tr *Track) *Track {
|
func (cont *Container) Save(tr *track) *track {
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Insert(tr *Track) *Track {
|
func (cont *Container) Insert(tr *track) *track {
|
||||||
quSpec := &querySpec{
|
quSpec := &querySpec{
|
||||||
Scols: append(cont.HeadFields, "Data"),
|
Scols: append(cont.HeadFields, "Data"),
|
||||||
}
|
}
|
||||||
|
@ -271,7 +277,7 @@ func (cont *Container) Insert(tr *Track) *Track {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Update(tr *Track) *Track {
|
func (cont *Container) Update(tr *track) *track {
|
||||||
if tr.timeStamp == nil {
|
if tr.timeStamp == nil {
|
||||||
ts := time.Now()
|
ts := time.Now()
|
||||||
tr.timeStamp = &ts
|
tr.timeStamp = &ts
|
||||||
|
@ -333,7 +339,7 @@ func GetContainerDef(p string) *ContDef {
|
||||||
return container_registry[p]
|
return container_registry[p]
|
||||||
}
|
}
|
||||||
|
|
||||||
func Get(db *sql.Storage, uid string) *Track {
|
func Get(db *sql.Storage, uid string) *track {
|
||||||
parts := strings.Split(uid, "-")
|
parts := strings.Split(uid, "-")
|
||||||
cd := GetContainerDef(parts[0])
|
cd := GetContainerDef(parts[0])
|
||||||
cont := cd.ContFactory(db)
|
cont := cd.ContFactory(db)
|
||||||
|
|
Loading…
Add table
Reference in a new issue