29 lines
717 B
Go
29 lines
717 B
Go
package msgstore
|
|
|
|
import (
|
|
"text/template"
|
|
|
|
lib "git.sr.ht/~cco/go-scopes"
|
|
"git.sr.ht/~cco/go-scopes/storage/sql"
|
|
)
|
|
|
|
var Store = func(db *sql.Storage, msg lib.Message) {
|
|
q := buildQuery(db, "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, ok := sql_templates[qname]
|
|
if !ok {
|
|
t = db.ParseTemplate(sql_sources[qname])
|
|
sql_templates[qname] = t
|
|
}
|
|
return db.SetTable(t, tname)
|
|
}
|
|
|
|
var sql_templates = map[string]*template.Template{}
|
|
|
|
var sql_sources = map[string]string{
|
|
"insert_msg": `insert into {{ .table }} (domain, action, class, item, payload)
|
|
values ($1, $2, $3, $4, $5)`,
|
|
}
|