provide common method QueryOne for single row queries
This commit is contained in:
parent
a9f8ea6b47
commit
53e0759e9f
1 changed files with 13 additions and 16 deletions
|
@ -99,7 +99,9 @@ func (cont *Container) setupQuerySpec(spec *querySpec) *querySpec {
|
||||||
} else {
|
} else {
|
||||||
spec.Table = fmt.Sprintf("%s.%s", cont.Storage.Schema, cont.TableName)
|
spec.Table = fmt.Sprintf("%s.%s", cont.Storage.Schema, cont.TableName)
|
||||||
}
|
}
|
||||||
|
if spec.Scols == nil {
|
||||||
spec.Scols = append(cont.HeadFields, "timestamp", "data", "trackid")
|
spec.Scols = append(cont.HeadFields, "timestamp", "data", "trackid")
|
||||||
|
}
|
||||||
for i, v := range spec.Headvals {
|
for i, v := range spec.Headvals {
|
||||||
if v != "" {
|
if v != "" {
|
||||||
spec.Qucols = append(spec.Qucols, cont.HeadFields[i])
|
spec.Qucols = append(spec.Qucols, cont.HeadFields[i])
|
||||||
|
@ -124,36 +126,31 @@ type querySpec struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) Get(id lib.Ident) *Track {
|
func (cont *Container) Get(id lib.Ident) *Track {
|
||||||
db := cont.Storage
|
|
||||||
var tr *Track
|
|
||||||
proc := func(r *sql.Rows) error {
|
|
||||||
tr = cont.ItemFactory(cont)
|
|
||||||
return tr.ScanP(r)
|
|
||||||
}
|
|
||||||
quSpec := &querySpec{
|
quSpec := &querySpec{
|
||||||
Qucols: lib.StrSlice{"trackid"},
|
Qucols: lib.StrSlice{"trackid"},
|
||||||
Quvals: []any{id},
|
Quvals: []any{id},
|
||||||
}
|
}
|
||||||
cont.setupQuerySpec(quSpec)
|
return cont.QueryOne(quSpec)
|
||||||
sql := storage.BuildSql(SqlSelect, quSpec)
|
|
||||||
db.Query(proc, sql, id)
|
|
||||||
return tr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cont *Container) QueryLast(hv ...string) *Track {
|
func (cont *Container) QueryLast(hv ...string) *Track {
|
||||||
|
quSpec := &querySpec{
|
||||||
|
Headvals: hv,
|
||||||
|
Ordcols: lib.StrSlice{"timestamp"},
|
||||||
|
Limit: 1,
|
||||||
|
}
|
||||||
|
return cont.QueryOne(quSpec)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cont *Container) QueryOne(quSpec *querySpec) *Track {
|
||||||
db := cont.Storage
|
db := cont.Storage
|
||||||
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)
|
||||||
}
|
}
|
||||||
quSpec := &querySpec{
|
|
||||||
Headvals: hv,
|
|
||||||
Ordcols: lib.StrSlice{"timestamp"},
|
|
||||||
}
|
|
||||||
cont.setupQuerySpec(quSpec)
|
cont.setupQuerySpec(quSpec)
|
||||||
sql := storage.BuildSql(SqlSelect, quSpec)
|
sql := storage.BuildSql(SqlSelect, quSpec)
|
||||||
println(sql)
|
|
||||||
db.Query(proc, sql, quSpec.Quvals...)
|
db.Query(proc, sql, quSpec.Quvals...)
|
||||||
return tr
|
return tr
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue