// Package `tracking` defines a generic track (sort of record) type // and a container type that allows storing of tracks in a SQL database. package tracking import ( "time" lib "git.sr.ht/~cco/go-scopes" "git.sr.ht/~cco/go-scopes/storage" sql "git.sr.ht/~cco/go-scopes/storage" ) type track struct { TrackId uint Head map[string]string TimeStamp *time.Time Data lib.Payload Container *container } type container struct { headFields []string indexes [][]string storage *sql.Storage } func Container(db *sql.Storage) *container { return &container{ headFields: []string{"taskId", "userName"}, indexes: [][]string{[]string{"taskId", "userName"}, []string{"userName"}}, storage: db, } } func Create(cont *container) *container { db := cont.storage data := map[string]interface{}{ "schema": db.Schema, "tablename": "tracks", "headFields": cont.headFields, "indexes": cont.indexes, "params": db.Params, } sql := storage.BuildSql(SqlCreate, data) println(sql) _, err := db.Exec(sql) if err == nil { return cont } return nil }