sqltemplate.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package xorm
  2. import (
  3. "html/template"
  4. "os"
  5. "path/filepath"
  6. "github.com/CloudyKit/jet"
  7. "gopkg.in/flosch/pongo2.v3"
  8. )
  9. type SqlTemplate interface {
  10. WalkFunc(path string, info os.FileInfo, err error) error
  11. paresSqlTemplate(filename string, filepath string) error
  12. ReadTemplate(filepath string) ([]byte, error)
  13. Execute(key string, args ...interface{}) (string, error)
  14. RootDir() string
  15. Extension() string
  16. SetSqlTemplateCipher(cipher Cipher)
  17. LoadSqlTemplate(filepath string) error
  18. BatchLoadSqlTemplate(filepathSlice []string) error
  19. ReloadSqlTemplate(filepath string) error
  20. BatchReloadSqlTemplate(filepathSlice []string) error
  21. AddSqlTemplate(key string, sqlTemplateStr string) error
  22. UpdateSqlTemplate(key string, sqlTemplateStr string) error
  23. RemoveSqlTemplate(key string)
  24. BatchAddSqlTemplate(key string, sqlTemplateStrMap map[string]string) error
  25. BatchUpdateSqlTemplate(key string, sqlTemplateStrMap map[string]string) error
  26. BatchRemoveSqlTemplate(key []string)
  27. }
  28. func Pongo2(directory, extension string) *Pongo2Template {
  29. template := make(map[string]*pongo2.Template, 100)
  30. return &Pongo2Template{
  31. SqlTemplateRootDir: directory,
  32. extension: extension,
  33. Template: template,
  34. }
  35. }
  36. func Default(directory, extension string) *HTMLTemplate {
  37. template := make(map[string]*template.Template, 100)
  38. return &HTMLTemplate{
  39. SqlTemplateRootDir: directory,
  40. extension: extension,
  41. Template: template,
  42. }
  43. }
  44. func Jet(directory, extension string) *JetTemplate {
  45. template := make(map[string]*jet.Template, 100)
  46. return &JetTemplate{
  47. SqlTemplateRootDir: directory,
  48. extension: extension,
  49. Template: template,
  50. }
  51. }
  52. func (engine *Engine) RegisterSqlTemplate(sqlt SqlTemplate, Cipher ...Cipher) error {
  53. engine.SqlTemplate = sqlt
  54. if len(Cipher) > 0 {
  55. engine.SqlTemplate.SetSqlTemplateCipher(Cipher[0])
  56. }
  57. err := filepath.Walk(engine.SqlTemplate.RootDir(), engine.SqlTemplate.WalkFunc)
  58. if err != nil {
  59. return err
  60. }
  61. return nil
  62. }
  63. func (engine *Engine) LoadSqlTemplate(filepath string) error {
  64. return engine.SqlTemplate.LoadSqlTemplate(filepath)
  65. }
  66. func (engine *Engine) BatchLoadSqlTemplate(filepathSlice []string) error {
  67. return engine.SqlTemplate.BatchLoadSqlTemplate(filepathSlice)
  68. }
  69. func (engine *Engine) ReloadSqlTemplate(filepath string) error {
  70. return engine.SqlTemplate.ReloadSqlTemplate(filepath)
  71. }
  72. func (engine *Engine) BatchReloadSqlTemplate(filepathSlice []string) error {
  73. return engine.SqlTemplate.BatchReloadSqlTemplate(filepathSlice)
  74. }
  75. func (engine *Engine) AddSqlTemplate(key string, sqlTemplateStr string) error {
  76. return engine.SqlTemplate.AddSqlTemplate(key, sqlTemplateStr)
  77. }
  78. func (engine *Engine) UpdateSqlTemplate(key string, sqlTemplateStr string) error {
  79. return engine.SqlTemplate.UpdateSqlTemplate(key, sqlTemplateStr)
  80. }
  81. func (engine *Engine) RemoveSqlTemplate(key string) {
  82. engine.SqlTemplate.RemoveSqlTemplate(key)
  83. }
  84. func (engine *Engine) BatchAddSqlTemplate(key string, sqlTemplateStrMap map[string]string) error {
  85. return engine.SqlTemplate.BatchAddSqlTemplate(key, sqlTemplateStrMap)
  86. }
  87. func (engine *Engine) BatchUpdateSqlTemplate(key string, sqlTemplateStrMap map[string]string) error {
  88. return engine.SqlTemplate.BatchUpdateSqlTemplate(key, sqlTemplateStrMap)
  89. }
  90. func (engine *Engine) BatchRemoveSqlTemplate(key []string) {
  91. engine.SqlTemplate.BatchRemoveSqlTemplate(key)
  92. }