Browse Source

修改SqlMap和SqlTemplate初始化方式

xormplus 10 years ago
parent
commit
db2466f3a7
8 changed files with 188 additions and 137 deletions
  1. 1 0
      engine.go
  2. 2 2
      engineplus.go
  3. 19 19
      sessionplus.go
  4. 85 0
      sqlmap.go
  5. 63 0
      sqltemplate.go
  6. 18 9
      test/xorm_test.go
  7. 0 4
      xorm.go
  8. 0 103
      xormplus.go

+ 1 - 0
engine.go

@@ -33,6 +33,7 @@ type Engine struct {
 	TagIdentifier string
 	Tables        map[reflect.Type]*core.Table
 	SqlMap  SqlMap
+	SqlTemplate  SqlTemplate
 	mutex  *sync.RWMutex
 	Cacher core.Cacher
 

+ 2 - 2
engineplus.go

@@ -16,10 +16,10 @@ func (engine *Engine) SqlTemplateClient(sqlTagName string, args ...interface{})
 	session := engine.NewSession()
 	session.IsAutoClose = true
 	map1:=args[0].(map[string]interface{})
-	if engine.SqlMap.SqlTemplate[sqlTagName]==nil{
+	if engine.SqlTemplate.Template[sqlTagName]==nil{
 		return session.Sql("", &map1)
 	}
-	sql, err := engine.SqlMap.SqlTemplate[sqlTagName].Execute(map1)
+	sql, err := engine.SqlTemplate.Template[sqlTagName].Execute(map1)
 	if err != nil {
 		engine.Logger.Err(err)
 	}

+ 19 - 19
sessionplus.go

@@ -20,12 +20,12 @@ import (
 type ResultBean struct {
 	Has bool
 	Result interface{}
-	Err    error
+	Error    error
 }
 
 func (resultBean ResultBean) Json() (bool,string, error) {
-	if resultBean.Err != nil {
-		return resultBean.Has,"", resultBean.Err
+	if resultBean.Error != nil {
+		return resultBean.Has,"", resultBean.Error
 	}
 	if !resultBean.Has{
 		return resultBean.Has,"", nil
@@ -36,14 +36,14 @@ func (resultBean ResultBean) Json() (bool,string, error) {
 
 func (session *Session) GetFirst(bean interface{}) ResultBean {
 	has, err := session.Get(bean)
-	r := ResultBean{Has: has,Result:bean, Err: err}
+	r := ResultBean{Has: has,Result:bean, Error: err}
 	return r
 }
 
 func (resultBean ResultBean) Xml() (bool,string, error) {
 	
-	if resultBean.Err != nil {
-		return false,"", resultBean.Err
+	if resultBean.Error != nil {
+		return false,"", resultBean.Error
 	}
 	if !resultBean.Has{
 		return resultBean.Has,"", nil
@@ -70,8 +70,8 @@ func (resultBean ResultBean) Xml() (bool,string, error) {
 }
 
 func (resultBean ResultBean) XmlIndent(prefix string, indent string, recordTag string) (bool,string, error) {
-	if resultBean.Err != nil {
-		return false,"", resultBean.Err
+	if resultBean.Error != nil {
+		return false,"", resultBean.Error
 	}
 	if !resultBean.Has{
 		return resultBean.Has,"", nil
@@ -99,20 +99,20 @@ func (resultBean ResultBean) XmlIndent(prefix string, indent string, recordTag s
 
 type ResultMap struct {
 	Result []map[string]interface{}
-	Err    error
+	Error    error
 }
 
 func (resultMap ResultMap) Json() (string, error) {
 
-	if resultMap.Err != nil {
-		return "", resultMap.Err
+	if resultMap.Error != nil {
+		return "", resultMap.Error
 	}
 	return JSONString(resultMap.Result, true)
 }
 
 func (resultMap ResultMap) Xml() (string, error) {
-	if resultMap.Err != nil {
-		return "", resultMap.Err
+	if resultMap.Error != nil {
+		return "", resultMap.Error
 	}
 	results, err := anyxml.Xml(resultMap.Result)
 	if err != nil {
@@ -122,8 +122,8 @@ func (resultMap ResultMap) Xml() (string, error) {
 }
 
 func (resultMap ResultMap) XmlIndent(prefix string, indent string, recordTag string) (string, error) {
-	if resultMap.Err != nil {
-		return "", resultMap.Err
+	if resultMap.Error != nil {
+		return "", resultMap.Error
 	}
 
 	results, err := anyxml.XmlIndent(resultMap.Result, prefix, indent, recordTag)
@@ -138,7 +138,7 @@ func (session *Session) FindAll() ResultMap {
 	sql := session.Statement.RawSQL
 	params := session.Statement.RawParams
 	result, err := session.QueryAll(sql, params...)
-	r := ResultMap{Result: result, Err: err}
+	r := ResultMap{Result: result, Error: err}
 	return r
 }
 
@@ -147,7 +147,7 @@ func (session *Session) FindAllWithDateFormat(dateFormat string) ResultMap {
 	sql := session.Statement.RawSQL
 	params := session.Statement.RawParams
 	result, err := session.QueryAllWithDateFormat(dateFormat, sql, params...)
-	r := ResultMap{Result: result, Err: err}
+	r := ResultMap{Result: result, Error: err}
 	return r
 }
 
@@ -156,7 +156,7 @@ func (session *Session) FindAllByParamMap() ResultMap {
 	sql := session.Statement.RawSQL
 	params := session.Statement.RawParams
 	result, err := session.QueryAllByMap(sql, params[0])
-	r := ResultMap{Result: result, Err: err}
+	r := ResultMap{Result: result, Error: err}
 	return r
 }
 
@@ -164,7 +164,7 @@ func (session *Session) FindAllByParamMapWithDateFormat(dateFormat string) Resul
 	sql := session.Statement.RawSQL
 	params := session.Statement.RawParams
 	results, err := session.QueryAllByMapWithDateFormat(dateFormat, sql, params[0])
-	r := ResultMap{Result: results, Err: err}
+	r := ResultMap{Result: results, Error: err}
 	return r
 }
 

+ 85 - 0
sqlmap.go

@@ -0,0 +1,85 @@
+package xorm
+
+import (
+	"encoding/xml"
+	"io/ioutil"
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/Unknwon/goconfig"
+)
+
+type SqlMap struct {
+	Sql map[string]string
+}
+
+type Result struct {
+	Sql []Sql `xml:"sql"`
+}
+
+type Sql struct {
+	Value string `xml:",chardata"`
+	Id    string `xml:"id,attr"`
+}
+
+func (engine *Engine) InitSqlMap() error {
+	var err error
+	cfg, err := goconfig.LoadConfigFile("./sql/xormcfg.ini")
+	if err != nil {
+		return err
+	}
+	var sqlMapRootDir string
+	sqlMapRootDir, err = cfg.GetValue("", "sqlMapRootDir")
+	if err != nil {
+		return err
+	}
+	
+	engine.SqlMap.Sql = make(map[string]string)
+	err = filepath.Walk(sqlMapRootDir, engine.SqlMap.walkFunc)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (sqlMap *SqlMap) walkFunc(path string, info os.FileInfo, err error) error {
+	if err != nil {
+		return err
+	}
+
+	if info.IsDir() {
+		return nil
+	}
+
+	if strings.HasSuffix(path, ".xml") {
+		err = sqlMap.paresSql(path)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func (sqlMap *SqlMap) paresSql(filepath string) error {
+
+	content, err := ioutil.ReadFile(filepath)
+
+	if err != nil {
+		return err
+	}
+
+	var result Result
+	err = xml.Unmarshal(content, &result)
+	if err != nil {
+		return err
+	}
+
+	for _, sql := range result.Sql {
+		sqlMap.Sql[sql.Id] = sql.Value
+	}
+
+	return nil
+}

+ 63 - 0
sqltemplate.go

@@ -0,0 +1,63 @@
+package xorm
+
+import (
+	"os"
+	"path/filepath"
+	"strings"
+
+	"github.com/Unknwon/goconfig"
+	"gopkg.in/flosch/pongo2.v3"
+)
+
+type SqlTemplate struct {
+	Template map[string]*pongo2.Template
+}
+
+func (engine *Engine) InitSqlTemplate() error {
+	var err error
+	cfg, err := goconfig.LoadConfigFile("./sql/xormcfg.ini")
+	if err != nil {
+		return err
+	}
+	var sqlMapRootDir string
+	sqlMapRootDir, err = cfg.GetValue("", "sqlMapRootDir")
+	if err != nil {
+		return err
+	}
+	
+	engine.SqlTemplate.Template = make(map[string]*pongo2.Template)
+	err = filepath.Walk(sqlMapRootDir, engine.SqlTemplate.walkFunc)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (sqlTemplate *SqlTemplate) walkFunc(path string, info os.FileInfo, err error) error {
+	if err != nil {
+		return err
+	}
+
+	if info.IsDir() {
+		return nil
+	}
+
+	if strings.HasSuffix(path, ".stpl") {
+		err = sqlTemplate.paresSqlTemplate(info.Name(), path)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func (sqlTemplate *SqlTemplate) paresSqlTemplate(filename string, filepath string) error {
+	template, err := pongo2.FromFile(filepath)
+	if err != nil {
+		return err
+	}
+
+	sqlTemplate.Template[filename] = template
+	return nil
+}

+ 18 - 9
test/xorm_test.go

@@ -42,15 +42,24 @@ func Test_InitDB(t *testing.T) {
 	if err != nil {
 		t.Fatal(err)
 	}
+
+	err = db.InitSqlMap()
+	if err != nil {
+		t.Fatal(err)
+	}
+	err = db.InitSqlTemplate()
+	if err != nil {
+		t.Fatal(err)
+	}
 }
 
 func Test_GetFirst_Json(t *testing.T) {
 	var article Article
-	has,rows, err := db.Id(2).GetFirst(&article).Json()
+	has, rows, err := db.Id(2).GetFirst(&article).Json()
 	if err != nil {
 		t.Fatal(err)
 	}
-	if !has{
+	if !has {
 		t.Log("[Test_GetFirst_Json]->rows: not exist\n")
 	}
 	t.Log("[Test_GetFirst_Json]->rows:\n" + rows)
@@ -58,11 +67,11 @@ func Test_GetFirst_Json(t *testing.T) {
 
 func Test_GetFirst_Xml(t *testing.T) {
 	var article Article
-	has,rows, err := db.Where("userid =?",3).GetFirst(&article).Xml()
+	has, rows, err := db.Where("userid =?", 3).GetFirst(&article).Xml()
 	if err != nil {
 		t.Fatal(err)
 	}
-	if !has{
+	if !has {
 		t.Log("[Test_GetFirst_Xml]->rows: not exist\n")
 	}
 	t.Log("[Test_GetFirst_Xml]->rows:\n" + rows)
@@ -70,11 +79,11 @@ func Test_GetFirst_Xml(t *testing.T) {
 
 func Test_GetFirst_XmlIndent(t *testing.T) {
 	var article Article
-	has,rows, err := db.Where("userid =?",3).GetFirst(&article).XmlIndent("","  ","article")
+	has, rows, err := db.Where("userid =?", 3).GetFirst(&article).XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}
-	if !has{
+	if !has {
 		t.Log("[Test_GetFirst_XmlIndent]->rows: not exist\n")
 	}
 	t.Log("[Test_GetFirst_XmlIndent]->rows:\n" + rows)
@@ -90,10 +99,10 @@ func Test_FindAll_Json(t *testing.T) {
 
 func Test_FindAll_ID(t *testing.T) {
 	rows := db.Sql("select id,title,createdatetime,content from article where id = ?", 2).FindAll()
-	if rows.Err != nil {
-		t.Fatal(rows.Err)
+	if rows.Error != nil {
+		t.Fatal(rows.Error)
 	}
-	t.Log("[Test_FindAll_Json]->rows[0][\"id\"]:\n" , rows.Result[0]["id"])
+	t.Log("[Test_FindAll_Json]->rows[0][\"id\"]:\n", rows.Result[0]["id"])
 }
 
 func Test_FindAll_Xml(t *testing.T) {

+ 0 - 4
xorm.go

@@ -49,9 +49,6 @@ func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
 		return nil, err
 	}
 
-	sqlMap := SqlMap{}
-	err = sqlMap.Init()
-
 	engine := &Engine{
 		db:            db,
 		dialect:       dialect,
@@ -60,7 +57,6 @@ func NewEngine(driverName string, dataSourceName string) (*Engine, error) {
 		TagIdentifier: "xorm",
 		Logger:        NewSimpleLogger(os.Stdout),
 		TZLocation:    time.Local,
-		SqlMap:        sqlMap,
 	}
 
 	if err != nil {

+ 0 - 103
xormplus.go

@@ -1,17 +1,7 @@
 package xorm
 
-import (
-	"encoding/xml"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"strings"
 //	"fmt"
 
-	"github.com/Unknwon/goconfig"
-	"gopkg.in/flosch/pongo2.v3"
-)
-
 const (
 	MSSQL_DRIVER      string = "mssql"
 	MSSQL_ODBC_DRIVER string = "odbc"
@@ -23,99 +13,6 @@ const (
 	SQLITE3_DRIVER    string = "sqlite3"
 )
 
-type SqlMap struct {
-	Sql         map[string]string
-	SqlTemplate map[string]*pongo2.Template
-	Cfg goconfig.ConfigFile
-}
-
-type Result struct {
-	Sql []Sql `xml:"sql"`
-}
-
-type Sql struct {
-	Value string `xml:",chardata"`
-	Id    string `xml:"id,attr"`
-}
-
-func (sqlMap *SqlMap) Init() error {
-	var err error
-	cfg, err := goconfig.LoadConfigFile("./sql/xormcfg.ini")
-	if err != nil {
-		return err
-	}
-	var sqlMapRootDir string
-	sqlMapRootDir, err = cfg.GetValue("", "sqlMapRootDir")
-	if err != nil {
-		return err
-	}
-
-	sqlMap.Sql = make(map[string]string)
-	sqlMap.SqlTemplate = make(map[string]*pongo2.Template)
-	err=filepath.Walk(sqlMapRootDir, sqlMap.walkFunc)
-	if err!=nil{
-		return err
-	}
-
-	return nil
-}
-
-func (sqlMap *SqlMap) walkFunc(path string, info os.FileInfo, err error) error {
-	if err!=nil{
-		return err
-	}
-
-	if info.IsDir() {
-		return nil
-	}
-
-	if strings.HasSuffix(path, ".xml") {
-		err = sqlMap.paresSql(path)
-		if err != nil {
-			return err
-		}
-	}
-
-	if strings.HasSuffix(path, ".stpl") {
-		err = sqlMap.paresSqlTemplate(info.Name(), path)
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (sqlMap *SqlMap) paresSqlTemplate(filename string, filepath string) error {
-	template, err := pongo2.FromFile(filepath)
-	if err != nil {
-		return err
-	}
-
-	sqlMap.SqlTemplate[filename] = template
-	return nil
-}
-
-func (sqlMap *SqlMap) paresSql(filepath string) error {
-
-	content, err := ioutil.ReadFile(filepath)
-
-	if err != nil {
-		return err
-	}
-
-	var result Result
-	err = xml.Unmarshal(content, &result)
-	if err != nil {
-		return err
-	}
-
-	for _, sql := range result.Sql {
-		sqlMap.Sql[sql.Id] = sql.Value
-	}
-
-	return nil
-}
-
 func NewOracle(driverName string, dataSourceName string) (*Engine, error) {
 	return NewEngine(driverName, dataSourceName)
 }