work in progress: Container.Update()
This commit is contained in:
parent
ab5082ee89
commit
45ab1200e2
2 changed files with 34 additions and 9 deletions
|
@ -8,9 +8,10 @@ import (
|
|||
|
||||
const (
|
||||
sql_table = `
|
||||
{{- $json := or .Params.jsonType "json" -}}
|
||||
{{- $params := .Cont.Storage.Params -}}
|
||||
{{- $json := or $params.jsonType "json" -}}
|
||||
create table if not exists {{ .Table }} (
|
||||
trackid {{ or .Params.idType "integer" }} primary key,
|
||||
trackid {{ or $params.idType "integer" }} primary key,
|
||||
{{ range .Cont.HeadFields -}}{{ toLower . }} text default '',
|
||||
{{ end -}}
|
||||
timestamp timestamptz default current_timestamp,
|
||||
|
@ -38,6 +39,8 @@ insert into {{ .Table }} (
|
|||
{{- end -}})
|
||||
returning trackid, timestamp`
|
||||
|
||||
sql_update = ``
|
||||
|
||||
sql_select = `
|
||||
select {{ range $j, $c := .Scols -}}
|
||||
{{- if ne $j 0 -}}, {{ end }}{{ toLower $c }}{{- end }}
|
||||
|
@ -55,10 +58,11 @@ select {{ range $j, $c := .Scols -}}
|
|||
`
|
||||
)
|
||||
|
||||
var SqlCreate, SqlInsert, SqlSelect *template.Template
|
||||
var SqlCreate, SqlInsert, SqlUpdate, SqlSelect *template.Template
|
||||
|
||||
func init() {
|
||||
SqlCreate = storage.Template("create_table", sql_table)
|
||||
SqlInsert = storage.Template("insert_track", sql_insert)
|
||||
SqlUpdate = storage.Template("update_track", sql_update)
|
||||
SqlSelect = storage.Template("select_track", sql_select)
|
||||
}
|
||||
|
|
|
@ -43,6 +43,15 @@ func MakeTrack(cont *Container, h ...string) *Track {
|
|||
return &tr
|
||||
}
|
||||
|
||||
func (tr *Track) AsSlice() []any {
|
||||
var sl []any
|
||||
for _, k := range tr.container.HeadFields {
|
||||
sl = append(sl, tr.Head[k])
|
||||
}
|
||||
sl = append(sl, tr.TimeStamp, tr.Data)
|
||||
return sl
|
||||
}
|
||||
|
||||
func (tr *Track) SetHead(h ...string) {
|
||||
for i, k := range tr.container.HeadFields {
|
||||
if i >= len(h) {
|
||||
|
@ -141,7 +150,6 @@ func (spec *querySpec) setup(cont *Container) {
|
|||
spec.AddOrd(c, false)
|
||||
}
|
||||
spec.Cont = cont
|
||||
spec.Params = cont.Storage.Params
|
||||
}
|
||||
|
||||
func (cont *Container) Get(id lib.Ident) *Track {
|
||||
|
@ -196,11 +204,11 @@ func (cont *Container) NewTrack(h []string, data lib.Map) *Track {
|
|||
return tr
|
||||
}
|
||||
|
||||
func (cont *Container) Save(t *Track) lib.Ident {
|
||||
return 0
|
||||
func (cont *Container) Save(tr *Track) *Track {
|
||||
return tr
|
||||
}
|
||||
|
||||
func (cont *Container) Insert(tr *Track) lib.Ident {
|
||||
func (cont *Container) Insert(tr *Track) *Track {
|
||||
quSpec := &querySpec{
|
||||
Scols: append(cont.HeadFields, "Data"),
|
||||
}
|
||||
|
@ -219,9 +227,22 @@ func (cont *Container) Insert(tr *Track) lib.Ident {
|
|||
return err
|
||||
}
|
||||
if err := cont.Storage.Query(proc, sql, values...); err == nil {
|
||||
return tr.trackId
|
||||
return tr
|
||||
}
|
||||
return 0
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cont *Container) Update(tr *Track) *Track {
|
||||
quSpec := &querySpec{
|
||||
Qucols: lib.StrSlice{"trackid"},
|
||||
}
|
||||
quSpec.setup(cont)
|
||||
sql := storage.BuildSql(SqlUpdate, quSpec)
|
||||
n, _ := cont.Storage.Exec(sql, append(tr.AsSlice(), tr.trackId)...)
|
||||
if n == 1 {
|
||||
return tr
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func ParseDateTime(inp string) *time.Time {
|
||||
|
|
Loading…
Add table
Reference in a new issue