storage: first version of BuildQuery() basically OK
This commit is contained in:
parent
59e6516333
commit
f9cb596252
2 changed files with 15 additions and 13 deletions
|
@ -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 }}`
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Add table
Reference in a new issue