sqltemplate.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package xorm
  2. import (
  3. "os"
  4. "path/filepath"
  5. "strings"
  6. "github.com/Unknwon/goconfig"
  7. "gopkg.in/flosch/pongo2.v3"
  8. )
  9. type SqlTemplate struct {
  10. Template map[string]*pongo2.Template
  11. }
  12. func (engine *Engine) InitSqlTemplate() error {
  13. var err error
  14. cfg, err := goconfig.LoadConfigFile("./sql/xormcfg.ini")
  15. if err != nil {
  16. return err
  17. }
  18. var sqlMapRootDir string
  19. sqlMapRootDir, err = cfg.GetValue("", "SqlTemplateRootDir")
  20. if err != nil {
  21. return err
  22. }
  23. engine.SqlTemplate.Template = make(map[string]*pongo2.Template)
  24. err = filepath.Walk(sqlMapRootDir, engine.SqlTemplate.walkFunc)
  25. if err != nil {
  26. return err
  27. }
  28. return nil
  29. }
  30. func (sqlTemplate *SqlTemplate) walkFunc(path string, info os.FileInfo, err error) error {
  31. if err != nil {
  32. return err
  33. }
  34. if info.IsDir() {
  35. return nil
  36. }
  37. if strings.HasSuffix(path, ".stpl") {
  38. err = sqlTemplate.paresSqlTemplate(info.Name(), path)
  39. if err != nil {
  40. return err
  41. }
  42. }
  43. return nil
  44. }
  45. func (sqlTemplate *SqlTemplate) paresSqlTemplate(filename string, filepath string) error {
  46. template, err := pongo2.FromFile(filepath)
  47. if err != nil {
  48. return err
  49. }
  50. sqlTemplate.Template[filename] = template
  51. return nil
  52. }