diff --git a/storage/msgstore/msgstore.go b/storage/msgstore/msgstore.go index 829dbae..b3dedb2 100644 --- a/storage/msgstore/msgstore.go +++ b/storage/msgstore/msgstore.go @@ -1,8 +1,6 @@ package msgstore import ( - "text/template" - lib "git.sr.ht/~cco/go-scopes" "git.sr.ht/~cco/go-scopes/storage/sql" ) @@ -13,17 +11,6 @@ var Store = func(db *sql.Storage, msg lib.Message) { } 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 - } + t := db.Sql.Lookup(qname) 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)`, -} diff --git a/storage/sql/sql.go b/storage/sql/sql.go index b4a1ce3..bf286c4 100644 --- a/storage/sql/sql.go +++ b/storage/sql/sql.go @@ -17,6 +17,7 @@ type Cfg struct { type Storage struct { *sql.DB *Cfg + Sql *template.Template Errors []error } @@ -36,9 +37,18 @@ func Open(cfg *Cfg) *Storage { log.Error(err).Msg("sql.Open") return nil } - return &Storage{DB: db, Cfg: cfg} + storage := Storage{DB: db, Cfg: cfg} + storage.Sql = storage.ParseTemplate(SqlSources) + 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