storage: first version of BuildQuery() basically OK

This commit is contained in:
Helmut Merz 2023-08-24 12:00:43 +02:00
parent 59e6516333
commit f9cb596252
2 changed files with 15 additions and 13 deletions

View file

@ -6,11 +6,12 @@ import (
)
var Store = func(db *sql.Storage, msg lib.Message) {
q := buildQuery(db, "insert_msg", "messages")
q := db.BuildQuery("insert_msg", "messages")
db.Exec(q, msg.Domain(), msg.Action(), msg.Class(), msg.Item(), msg.Payload())
}
func buildQuery(db *sql.Storage, qname, tname string) string {
t := db.Sql.Lookup(qname)
return db.SetTable(t, tname)
func init() {
sql.SqlSources += `{{ define "insert_msg" -}}
insert into {{ .table }} (domain, action, class, item, payload)
values ($1, $2, $3, $4, $5) {{- end }}`
}

View file

@ -31,6 +31,8 @@ type scpcon[T any] interface {
scp
}
var SqlSources = ""
func Open(cfg *Cfg) *Storage {
db, err := sql.Open(cfg.Driver, cfg.Connstr)
if err != nil {
@ -42,13 +44,6 @@ func Open(cfg *Cfg) *Storage {
return &storage
}
const SqlSources = `
{{- define "insert_msg" -}}
insert into {{ .table }} (domain, action, class, item, payload)
values ($1, $2, $3, $4, $5)
{{- end }}
`
func QueryData[T scn[T]](db *Storage, q string, args ...interface{}) []T {
var data []T
var rec T
@ -138,7 +133,13 @@ func (db *Storage) ParseTemplate(q string) *template.Template {
return t
}
func (db *Storage) SetTable(t *template.Template, tname string) string {
func (db *Storage) BuildQuery(qname, tname string) string {
info := "sql.Storage.SetTable"
t := db.Sql.Lookup(qname)
if t == nil {
db.logErr(fmt.Errorf("template not found"), info, qname)
return ""
}
if db.Cfg.Schema != "" {
tname = db.Cfg.Schema + "." + tname
}
@ -146,7 +147,7 @@ func (db *Storage) SetTable(t *template.Template, tname string) string {
data := map[string]interface{}{"table": tname}
err := t.Execute(&out, data)
if err != nil {
db.logErr(err, "sql.Storage.SetTable", fmt.Sprintf("%+v", t))
db.logErr(err, info, fmt.Sprintf("%+v", t))
return ""
}
return out.String()