33 lines
653 B
Go
33 lines
653 B
Go
package storage
|
|
|
|
import (
|
|
"strings"
|
|
"text/template"
|
|
|
|
"git.sr.ht/~cco/go-scopes/logging/log"
|
|
)
|
|
|
|
var TemplateFunctions = map[string]any{
|
|
"toLower": strings.ToLower,
|
|
"add1": func(i int) int { return i + 1 },
|
|
"add": func(i, j int) int { return i + j },
|
|
}
|
|
|
|
func Template(name, src string) *template.Template {
|
|
t := template.New(name).Funcs(TemplateFunctions)
|
|
t, err := t.Parse(src)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
return t
|
|
}
|
|
|
|
func BuildSql(t *template.Template, data any) string {
|
|
var out strings.Builder
|
|
err := t.Execute(&out, data)
|
|
if err != nil {
|
|
log.Error(err).Msg("storage|template.BuildSql")
|
|
return ""
|
|
}
|
|
return out.String()
|
|
}
|