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 {
|
||||
spec.Table = fmt.Sprintf("%s.%s", cont.Storage.Schema, cont.TableName)
|
||||
}
|
||||
spec.Scols = append(cont.HeadFields, "timestamp", "data", "trackid")
|
||||
if spec.Scols == nil {
|
||||
spec.Scols = append(cont.HeadFields, "timestamp", "data", "trackid")
|
||||
}
|
||||
for i, v := range spec.Headvals {
|
||||
if v != "" {
|
||||
spec.Qucols = append(spec.Qucols, cont.HeadFields[i])
|
||||
|
@ -124,36 +126,31 @@ type querySpec struct {
|
|||
}
|
||||
|
||||
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{
|
||||
Qucols: lib.StrSlice{"trackid"},
|
||||
Quvals: []any{id},
|
||||
}
|
||||
cont.setupQuerySpec(quSpec)
|
||||
sql := storage.BuildSql(SqlSelect, quSpec)
|
||||
db.Query(proc, sql, id)
|
||||
return tr
|
||||
return cont.QueryOne(quSpec)
|
||||
}
|
||||
|
||||
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
|
||||
var tr *Track
|
||||
proc := func(r *sql.Rows) error {
|
||||
tr = cont.ItemFactory(cont)
|
||||
return tr.ScanP(r)
|
||||
}
|
||||
quSpec := &querySpec{
|
||||
Headvals: hv,
|
||||
Ordcols: lib.StrSlice{"timestamp"},
|
||||
}
|
||||
cont.setupQuerySpec(quSpec)
|
||||
sql := storage.BuildSql(SqlSelect, quSpec)
|
||||
println(sql)
|
||||
db.Query(proc, sql, quSpec.Quvals...)
|
||||
return tr
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue