|
@@ -12,9 +12,23 @@ import (
|
|
|
type SqlTemplate struct {
|
|
type SqlTemplate struct {
|
|
|
SqlTemplateRootDir string
|
|
SqlTemplateRootDir string
|
|
|
Template map[string]*pongo2.Template
|
|
Template map[string]*pongo2.Template
|
|
|
|
|
+ Extension string
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-func (engine *Engine) InitSqlTemplate() error {
|
|
|
|
|
|
|
+type SqlTemplateOptions struct {
|
|
|
|
|
+ Extension string
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) InitSqlTemplate(options ...SqlTemplateOptions) error {
|
|
|
|
|
+ var opt SqlTemplateOptions
|
|
|
|
|
+ if len(options) > 0 {
|
|
|
|
|
+ opt = options[0]
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if len(opt.Extension) == 0 {
|
|
|
|
|
+ opt.Extension = ".stpl"
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
var err error
|
|
var err error
|
|
|
if engine.SqlTemplate.SqlTemplateRootDir == "" {
|
|
if engine.SqlTemplate.SqlTemplateRootDir == "" {
|
|
|
cfg, err := goconfig.LoadConfigFile("./sql/xormcfg.ini")
|
|
cfg, err := goconfig.LoadConfigFile("./sql/xormcfg.ini")
|
|
@@ -36,6 +50,64 @@ func (engine *Engine) InitSqlTemplate() error {
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (engine *Engine) LoadSqlTemplate(filepath string) error {
|
|
|
|
|
+ if strings.HasSuffix(filepath, engine.SqlTemplate.Extension) {
|
|
|
|
|
+ err := engine.loadSqlTemplate(filepath)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) ReloadSqlTemplate(filepath string) error {
|
|
|
|
|
+ if strings.HasSuffix(filepath, engine.SqlTemplate.Extension) {
|
|
|
|
|
+ err := engine.reloadSqlTemplate(filepath)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) loadSqlTemplate(filepath string) error {
|
|
|
|
|
+ info, err := os.Lstat(filepath)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if info.IsDir() {
|
|
|
|
|
+ return nil
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ err = engine.SqlTemplate.paresSqlTemplate(info.Name(), filepath)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) reloadSqlTemplate(filepath string) error {
|
|
|
|
|
+ info, err := os.Lstat(filepath)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if info.IsDir() {
|
|
|
|
|
+ return nil
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ err = engine.SqlTemplate.paresSqlTemplate(info.Name(), filepath)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (sqlTemplate *SqlTemplate) walkFunc(path string, info os.FileInfo, err error) error {
|
|
func (sqlTemplate *SqlTemplate) walkFunc(path string, info os.FileInfo, err error) error {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
@@ -45,7 +117,7 @@ func (sqlTemplate *SqlTemplate) walkFunc(path string, info os.FileInfo, err erro
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if strings.HasSuffix(path, ".stpl") {
|
|
|
|
|
|
|
+ if strings.HasSuffix(path, sqlTemplate.Extension) {
|
|
|
err = sqlTemplate.paresSqlTemplate(info.Name(), path)
|
|
err = sqlTemplate.paresSqlTemplate(info.Name(), path)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
@@ -61,5 +133,49 @@ func (sqlTemplate *SqlTemplate) paresSqlTemplate(filename string, filepath strin
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
sqlTemplate.Template[filename] = template
|
|
sqlTemplate.Template[filename] = template
|
|
|
|
|
+
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) AddSqlTemplate(key string, sqlTemplateStr string) error {
|
|
|
|
|
+ return engine.SqlTemplate.addSqlTemplate(key, sqlTemplateStr)
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (sqlTemplate *SqlTemplate) addSqlTemplate(key string, sqlTemplateStr string) error {
|
|
|
|
|
+
|
|
|
|
|
+ template, err := pongo2.FromString(sqlTemplateStr)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sqlTemplate.Template[key] = template
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) UpdateSqlTemplate(key string, sqlTemplateStr string) error {
|
|
|
|
|
+ return engine.SqlTemplate.updateSqlTemplate(key, sqlTemplateStr)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (sqlTemplate *SqlTemplate) updateSqlTemplate(key string, sqlTemplateStr string) error {
|
|
|
|
|
+
|
|
|
|
|
+ template, err := pongo2.FromString(sqlTemplateStr)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sqlTemplate.Template[key] = template
|
|
|
|
|
+
|
|
|
|
|
+ return nil
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (engine *Engine) RemoveSqlTemplate(key string) {
|
|
|
|
|
+ engine.SqlTemplate.removeSqlTemplate(key)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (sqlTemplate *SqlTemplate) removeSqlTemplate(key string) {
|
|
|
|
|
+ delete(sqlTemplate.Template, key)
|
|
|
|
|
+}
|