Browse Source

update Query and QueryWithDateFormat function

xormplus 9 years ago
parent
commit
fe399adfb0
2 changed files with 49 additions and 39 deletions
  1. 31 23
      sessionplus.go
  2. 18 16
      test/xorm_test.go

+ 31 - 23
sessionplus.go

@@ -223,7 +223,19 @@ func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{})
 func (session *Session) Query() ResultMap {
 	sql := session.Statement.RawSQL
 	params := session.Statement.RawParams
-	result, err := session.queryAll(sql, params...)
+	i := len(params)
+	var result []map[string]interface{}
+	var err error
+	if i == 1  {
+		vv := reflect.ValueOf(params[0])
+		if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
+			result, err = session.queryAll(sql, params...)
+		}else{
+			result, err = session.queryAllByMap(sql, params[0])
+		}
+	} else {
+		result, err = session.queryAll(sql, params...)
+	}
 	r := ResultMap{Result: result, Error: err}
 	return r
 }
@@ -232,28 +244,23 @@ func (session *Session) Query() ResultMap {
 func (session *Session) QueryWithDateFormat(dateFormat string) ResultMap {
 	sql := session.Statement.RawSQL
 	params := session.Statement.RawParams
-	result, err := session.queryAllWithDateFormat(dateFormat, sql, params...)
-	r := ResultMap{Result: result, Error: err}
-	return r
-}
-
-// Exec a raw sql and return records as []map[string]interface{}
-func (session *Session) QueryByParamMap() ResultMap {
-	sql := session.Statement.RawSQL
-	params := session.Statement.RawParams
-	result, err := session.queryAllByMap(sql, params[0])
+	i := len(params)
+	var result []map[string]interface{}
+	var err error
+	if i == 1  {
+		vv := reflect.ValueOf(params[0])
+		if vv.Kind() != reflect.Ptr || vv.Elem().Kind() != reflect.Map {
+			result, err = session.queryAllWithDateFormat(dateFormat, sql, params...)
+		}else{
+			result, err = session.queryAllByMapWithDateFormat(dateFormat, sql, params[0])
+		}
+	} else {
+		result, err = session.queryAllWithDateFormat(dateFormat, sql, params...)
+	}
 	r := ResultMap{Result: result, Error: err}
 	return r
 }
 
-func (session *Session) QueryByParamMapWithDateFormat(dateFormat string) ResultMap {
-	sql := session.Statement.RawSQL
-	params := session.Statement.RawParams
-	results, err := session.queryAllByMapWithDateFormat(dateFormat, sql, params[0])
-	r := ResultMap{Result: results, Error: err}
-	return r
-}
-
 // =============================
 // for Object
 // =============================
@@ -568,7 +575,8 @@ func (session *Session) _row2BeanWithDateFormat(dateFormat string, rows *core.Ro
 
 						t := vv.Convert(core.TimeType).Interface().(time.Time)
 						z, _ := t.Zone()
-						if len(z) == 0 || t.Year() == 0 { // !nashtsai! HACK tmp work around for lib/pq doesn't properly time with location
+						if len(z) == 0 || t.Year() == 0 {
+							// !nashtsai! HACK tmp work around for lib/pq doesn't properly time with location
 							session.Engine.logger.Debugf("empty zone key[%v] : %v | zone: %v | location: %+v\n", key, t, z, *t.Location())
 							t = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(),
 								t.Minute(), t.Second(), t.Nanosecond(), time.Local)
@@ -585,7 +593,7 @@ func (session *Session) _row2BeanWithDateFormat(dateFormat string, rows *core.Ro
 
 						fieldValue.Set(reflect.ValueOf(t).Convert(fieldType))
 					} else if rawValueType == core.IntType || rawValueType == core.Int64Type ||
-						rawValueType == core.Int32Type {
+					rawValueType == core.Int32Type {
 						hasAssigned = true
 						var tz *time.Location
 						if col.TimeZone == nil {
@@ -820,8 +828,8 @@ func (session *Session) _row2BeanWithDateFormat(dateFormat string, rows *core.Ro
 					}
 					hasAssigned = true
 				} // switch fieldType
-				// default:
-				// 	session.Engine.LogError("unsupported type in Scan: ", reflect.TypeOf(v).String())
+			// default:
+			// 	session.Engine.LogError("unsupported type in Scan: ", reflect.TypeOf(v).String())
 			} // switch fieldType.Kind()
 
 			// !nashtsai! for value can't be assigned directly fallback to convert to []byte then back to value

+ 18 - 16
test/xorm_test.go

@@ -53,6 +53,8 @@ func Test_InitDB(t *testing.T) {
 	if err != nil {
 		t.Fatal(err)
 	}
+
+	db.ShowSQL(true)
 }
 
 func Test_Get_Struct(t *testing.T) {
@@ -195,7 +197,7 @@ func Test_QueryWithDateFormat_XmlIndent(t *testing.T) {
 
 func Test_QueryByParamMap_Json(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 32, "userid": 1}
-	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryByParamMap().Json()
+	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().Json()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -204,7 +206,7 @@ func Test_QueryByParamMap_Json(t *testing.T) {
 
 func Test_QueryByParamMap_Xml(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 6, "userid": 1}
-	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryByParamMap().Xml()
+	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().Xml()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -213,7 +215,7 @@ func Test_QueryByParamMap_Xml(t *testing.T) {
 
 func Test_QueryByParamMap_XmlIndent(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 6, "userid": 1}
-	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryByParamMap().XmlIndent("", "  ", "article")
+	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).Query().XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -222,7 +224,7 @@ func Test_QueryByParamMap_XmlIndent(t *testing.T) {
 
 func Test_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 6, "userid": 1}
-	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryByParamMapWithDateFormat("2006/01/02").XmlIndent("", "  ", "article")
+	rows, err := db.Sql("select id,title,createdatetime,content from article where id = ?id and userid=?userid", &paramMap).QueryWithDateFormat("2006/01/02").XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -231,7 +233,7 @@ func Test_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
 
 func Test_SqlMapClient_QueryByParamMap_Json(t *testing.T) {
 	paramMap := map[string]interface{}{"1": 2, "2": 5}
-	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMap().Json()
+	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).Query().Json()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -240,7 +242,7 @@ func Test_SqlMapClient_QueryByParamMap_Json(t *testing.T) {
 
 func Test_SqlMapClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
 	paramMap := map[string]interface{}{"1": 2, "2": 5}
-	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMapWithDateFormat("2006-01-02 15:04").Json()
+	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").Json()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -249,7 +251,7 @@ func Test_SqlMapClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
 
 func Test_SqlMapClient_QueryByParamMap_Xml(t *testing.T) {
 	paramMap := map[string]interface{}{"1": 2, "2": 5}
-	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMap().Xml()
+	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).Query().Xml()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -258,7 +260,7 @@ func Test_SqlMapClient_QueryByParamMap_Xml(t *testing.T) {
 
 func Test_SqlMapClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
 	paramMap := map[string]interface{}{"1": 2, "2": 5}
-	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMapWithDateFormat("2006-01-02 15:04").Xml()
+	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").Xml()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -267,7 +269,7 @@ func Test_SqlMapClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
 
 func Test_SqlMapClient_QueryByParamMap_XmlIndent(t *testing.T) {
 	paramMap := map[string]interface{}{"1": 2, "2": 5}
-	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMap().XmlIndent("", "  ", "article")
+	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).Query().XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -276,7 +278,7 @@ func Test_SqlMapClient_QueryByParamMap_XmlIndent(t *testing.T) {
 
 func Test_SqlMapClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
 	paramMap := map[string]interface{}{"1": 2, "2": 5}
-	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryByParamMapWithDateFormat("2006-01-02 15:04").XmlIndent("", "  ", "article")
+	rows, err := db.SqlMapClient("selectAllArticle", &paramMap).QueryWithDateFormat("2006-01-02 15:04").XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -285,7 +287,7 @@ func Test_SqlMapClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
 
 func Test_SqlTemplateClient_QueryByParamMap_Json(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
-	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMap().Json()
+	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).Query().Json()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -294,7 +296,7 @@ func Test_SqlTemplateClient_QueryByParamMap_Json(t *testing.T) {
 
 func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 1}
-	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMapWithDateFormat("01/02/2006").Json()
+	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryWithDateFormat("01/02/2006").Json()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -303,7 +305,7 @@ func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Json(t *testing.T) {
 
 func Test_SqlTemplateClient_QueryByParamMap_Xml(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
-	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMap().Xml()
+	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).Query().Xml()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -312,7 +314,7 @@ func Test_SqlTemplateClient_QueryByParamMap_Xml(t *testing.T) {
 
 func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
-	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMapWithDateFormat("01/02/2006").Xml()
+	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryWithDateFormat("01/02/2006").Xml()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -321,7 +323,7 @@ func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_Xml(t *testing.T) {
 
 func Test_SqlTemplateClient_QueryByParamMap_XmlIndent(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
-	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMap().XmlIndent("", "  ", "article")
+	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).Query().XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -330,7 +332,7 @@ func Test_SqlTemplateClient_QueryByParamMap_XmlIndent(t *testing.T) {
 
 func Test_SqlTemplateClient_QueryByParamMapWithDateFormat_XmlIndent(t *testing.T) {
 	paramMap := map[string]interface{}{"id": 2, "userid": 3, "count": 2}
-	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryByParamMapWithDateFormat("01/02/2006").XmlIndent("", "  ", "article")
+	rows, err := db.SqlTemplateClient("select.example.stpl", paramMap).QueryWithDateFormat("01/02/2006").XmlIndent("", "  ", "article")
 	if err != nil {
 		t.Fatal(err)
 	}