|
|
@@ -14,6 +14,11 @@ type SqlsExecutor struct {
|
|
|
}
|
|
|
|
|
|
func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[string][]map[string]interface{}, error) {
|
|
|
+ defer sqlsExecutor.session.resetStatement()
|
|
|
+ if sqlsExecutor.session.IsAutoClose {
|
|
|
+ defer sqlsExecutor.session.Close()
|
|
|
+ }
|
|
|
+
|
|
|
if sqlsExecutor.err != nil {
|
|
|
return nil, nil, sqlsExecutor.err
|
|
|
}
|
|
|
@@ -23,6 +28,13 @@ func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[str
|
|
|
|
|
|
sqlModel := 1
|
|
|
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err := sqlsExecutor.session.Begin()
|
|
|
+ if err != nil {
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
switch sqlsExecutor.sqls.(type) {
|
|
|
case string:
|
|
|
sqlStr := strings.TrimSpace(sqlsExecutor.sqls.(string))
|
|
|
@@ -32,16 +44,24 @@ func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[str
|
|
|
switch sqlCmd {
|
|
|
case "select", "desc":
|
|
|
model_1_results = sqlsExecutor.session.Sql(sqlStr).Query()
|
|
|
-
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
+ sqlModel = 1
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
model_2_results, err = sqlsExecutor.session.Sql(sqlStr).Execute()
|
|
|
sqlModel = 2
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
}
|
|
|
} else {
|
|
|
switch sqlsExecutor.parmas.(type) {
|
|
|
case []map[string]interface{}:
|
|
|
parmaMap, ok := sqlsExecutor.parmas.([]map[string]interface{})
|
|
|
if !ok {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
return nil, nil, ErrParamsType
|
|
|
}
|
|
|
key := NewV4().String() + time.Now().String()
|
|
|
@@ -49,16 +69,24 @@ func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[str
|
|
|
switch sqlCmd {
|
|
|
case "select", "desc":
|
|
|
model_1_results = sqlsExecutor.session.SqlMapClient(key, &parmaMap[0]).Query()
|
|
|
-
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
+ sqlModel = 1
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
model_2_results, err = sqlsExecutor.session.SqlMapClient(key, &parmaMap[0]).Execute()
|
|
|
sqlModel = 2
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
|
|
|
}
|
|
|
sqlsExecutor.session.Engine.RemoveSql(key)
|
|
|
case map[string]interface{}:
|
|
|
parmaMap, ok := sqlsExecutor.parmas.(map[string]interface{})
|
|
|
if !ok {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
return nil, nil, ErrParamsType
|
|
|
}
|
|
|
key := NewV4().String() + time.Now().String()
|
|
|
@@ -66,12 +94,21 @@ func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[str
|
|
|
switch sqlCmd {
|
|
|
case "select", "desc":
|
|
|
model_1_results = sqlsExecutor.session.SqlMapClient(key, &parmaMap).Query()
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
+ sqlModel = 1
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
model_2_results, err = sqlsExecutor.session.SqlMapClient(key, &parmaMap).Execute()
|
|
|
sqlModel = 2
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
}
|
|
|
sqlsExecutor.session.Engine.RemoveSql(key)
|
|
|
default:
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
return nil, nil, ErrParamsType
|
|
|
}
|
|
|
}
|
|
|
@@ -80,14 +117,26 @@ func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[str
|
|
|
|
|
|
if sqlModel == 1 {
|
|
|
if model_1_results.Error != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
return nil, nil, model_1_results.Error
|
|
|
}
|
|
|
|
|
|
resultSlice[0] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
resultSlice[0] = model_1_results.Results
|
|
|
return resultSlice, nil, nil
|
|
|
- } else {
|
|
|
+ } else if sqlModel == 2 {
|
|
|
if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
return nil, nil, err
|
|
|
}
|
|
|
|
|
|
@@ -105,211 +154,371 @@ func (sqlsExecutor *SqlsExecutor) Execute() ([][]map[string]interface{}, map[str
|
|
|
resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
resultSlice[0] = resultMap
|
|
|
return resultSlice, nil, nil
|
|
|
+ } else {
|
|
|
+ resultSlice[0] = nil
|
|
|
}
|
|
|
case []string:
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Begin()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
sqlsSlice := sqlsExecutor.sqls.([]string)
|
|
|
n := len(sqlsSlice)
|
|
|
resultSlice := make([][]map[string]interface{}, n)
|
|
|
parmaSlice := make([]map[string]interface{}, n)
|
|
|
- switch sqlsExecutor.parmas.(type) {
|
|
|
- case []map[string]interface{}:
|
|
|
- parmaSlice = sqlsExecutor.parmas.([]map[string]interface{})
|
|
|
-
|
|
|
- default:
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
- }
|
|
|
- return nil, nil, ErrParamsType
|
|
|
- }
|
|
|
|
|
|
- for i, _ := range sqlsSlice {
|
|
|
- sqlStr := strings.TrimSpace(sqlsSlice[i])
|
|
|
- sqlCmd := strings.ToLower(strings.Split(sqlStr, " ")[0])
|
|
|
- if parmaSlice[i] == nil {
|
|
|
+ if sqlsExecutor.parmas == nil {
|
|
|
+ for i, _ := range sqlsSlice {
|
|
|
+ sqlStr := strings.TrimSpace(sqlsSlice[i])
|
|
|
+ sqlCmd := strings.ToLower(strings.Split(sqlStr, " ")[0])
|
|
|
switch sqlCmd {
|
|
|
case "select", "desc":
|
|
|
model_1_results = sqlsExecutor.session.Sql(sqlStr).Query()
|
|
|
-
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
+ sqlModel = 1
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
model_2_results, err = sqlsExecutor.session.Sql(sqlStr).Execute()
|
|
|
sqlModel = 2
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
}
|
|
|
- } else {
|
|
|
- key := NewV4().String() + time.Now().String()
|
|
|
- sqlsExecutor.session.Engine.AddSql(key, sqlStr)
|
|
|
- switch sqlCmd {
|
|
|
- case "select", "desc":
|
|
|
- model_1_results = sqlsExecutor.session.SqlMapClient(key, &parmaSlice[i]).Query()
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
- model_2_results, err = sqlsExecutor.session.SqlMapClient(key, &parmaSlice[i]).Execute()
|
|
|
- sqlModel = 2
|
|
|
- }
|
|
|
- sqlsExecutor.session.Engine.RemoveSql(key)
|
|
|
- }
|
|
|
|
|
|
- if sqlModel == 1 {
|
|
|
- if model_1_results.Error != nil {
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ if sqlModel == 1 {
|
|
|
+ if model_1_results.Error != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
}
|
|
|
+ return nil, nil, model_1_results.Error
|
|
|
}
|
|
|
- return nil, nil, model_1_results.Error
|
|
|
- }
|
|
|
|
|
|
- resultSlice[i] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
- resultSlice[i] = model_1_results.Results
|
|
|
+ resultSlice[i] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
+ resultSlice[i] = model_1_results.Results
|
|
|
|
|
|
- } else {
|
|
|
- if err != nil {
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ } else if sqlModel == 2 {
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ resultMap := make([]map[string]interface{}, 1)
|
|
|
+ resultMap[0] = make(map[string]interface{})
|
|
|
+
|
|
|
+ //todo all database support LastInsertId
|
|
|
+ LastInsertId, _ := model_2_results.LastInsertId()
|
|
|
+
|
|
|
+ resultMap[0]["LastInsertId"] = LastInsertId
|
|
|
+ RowsAffected, err := model_2_results.RowsAffected()
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
}
|
|
|
+ return nil, nil, err
|
|
|
}
|
|
|
- return nil, nil, err
|
|
|
+ resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
+ resultSlice[i] = make([]map[string]interface{}, 1)
|
|
|
+ resultSlice[i] = resultMap
|
|
|
+
|
|
|
+ } else {
|
|
|
+ resultSlice[i] = nil
|
|
|
}
|
|
|
|
|
|
- resultMap := make([]map[string]interface{}, 1)
|
|
|
- resultMap[0] = make(map[string]interface{})
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ switch sqlsExecutor.parmas.(type) {
|
|
|
+ case []map[string]interface{}:
|
|
|
+ parmaSlice = sqlsExecutor.parmas.([]map[string]interface{})
|
|
|
|
|
|
- //todo all database support LastInsertId
|
|
|
- LastInsertId, _ := model_2_results.LastInsertId()
|
|
|
+ default:
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, ErrParamsType
|
|
|
+ }
|
|
|
|
|
|
- resultMap[0]["LastInsertId"] = LastInsertId
|
|
|
- RowsAffected, err := model_2_results.RowsAffected()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ for i, _ := range sqlsSlice {
|
|
|
+ sqlStr := strings.TrimSpace(sqlsSlice[i])
|
|
|
+ sqlCmd := strings.ToLower(strings.Split(sqlStr, " ")[0])
|
|
|
+ if parmaSlice[i] == nil {
|
|
|
+ switch sqlCmd {
|
|
|
+ case "select", "desc":
|
|
|
+ model_1_results = sqlsExecutor.session.Sql(sqlStr).Query()
|
|
|
+ sqlModel = 1
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
+ model_2_results, err = sqlsExecutor.session.Sql(sqlStr).Execute()
|
|
|
+ sqlModel = 2
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ key := NewV4().String() + time.Now().String()
|
|
|
+ sqlsExecutor.session.Engine.AddSql(key, sqlStr)
|
|
|
+ switch sqlCmd {
|
|
|
+ case "select", "desc":
|
|
|
+ model_1_results = sqlsExecutor.session.SqlMapClient(key, &parmaSlice[i]).Query()
|
|
|
+ sqlModel = 1
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
+ model_2_results, err = sqlsExecutor.session.SqlMapClient(key, &parmaSlice[i]).Execute()
|
|
|
+ sqlModel = 2
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
+ }
|
|
|
+ sqlsExecutor.session.Engine.RemoveSql(key)
|
|
|
}
|
|
|
- resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
- resultSlice[i] = make([]map[string]interface{}, 1)
|
|
|
- resultSlice[i] = resultMap
|
|
|
|
|
|
+ if sqlModel == 1 {
|
|
|
+ if model_1_results.Error != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, model_1_results.Error
|
|
|
+ }
|
|
|
+
|
|
|
+ resultSlice[i] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
+ resultSlice[i] = model_1_results.Results
|
|
|
+
|
|
|
+ } else if sqlModel == 2 {
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ resultMap := make([]map[string]interface{}, 1)
|
|
|
+ resultMap[0] = make(map[string]interface{})
|
|
|
+
|
|
|
+ //todo all database support LastInsertId
|
|
|
+ LastInsertId, _ := model_2_results.LastInsertId()
|
|
|
+
|
|
|
+ resultMap[0]["LastInsertId"] = LastInsertId
|
|
|
+ RowsAffected, err := model_2_results.RowsAffected()
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+ resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
+ resultSlice[i] = make([]map[string]interface{}, 1)
|
|
|
+ resultSlice[i] = resultMap
|
|
|
+
|
|
|
+ } else {
|
|
|
+ resultSlice[i] = nil
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Commit()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ err1 := sqlsExecutor.session.Commit()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
}
|
|
|
}
|
|
|
return resultSlice, nil, nil
|
|
|
|
|
|
case map[string]string:
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Begin()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
sqlsMap := sqlsExecutor.sqls.(map[string]string)
|
|
|
n := len(sqlsMap)
|
|
|
resultsMap := make(map[string][]map[string]interface{}, n)
|
|
|
parmasMap := make(map[string]map[string]interface{}, n)
|
|
|
- switch sqlsExecutor.parmas.(type) {
|
|
|
- case map[string]map[string]interface{}:
|
|
|
- parmasMap = sqlsExecutor.parmas.(map[string]map[string]interface{})
|
|
|
-
|
|
|
- default:
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
- }
|
|
|
- return nil, nil, ErrParamsType
|
|
|
- }
|
|
|
|
|
|
- for k, _ := range sqlsMap {
|
|
|
- sqlStr := strings.TrimSpace(sqlsMap[k])
|
|
|
- sqlCmd := strings.ToLower(strings.Split(sqlStr, " ")[0])
|
|
|
- if parmasMap[k] == nil {
|
|
|
+ if sqlsExecutor.parmas == nil {
|
|
|
+ for k, _ := range sqlsMap {
|
|
|
+ sqlStr := strings.TrimSpace(sqlsMap[k])
|
|
|
+ sqlCmd := strings.ToLower(strings.Split(sqlStr, " ")[0])
|
|
|
switch sqlCmd {
|
|
|
case "select", "desc":
|
|
|
+ sqlModel = 1
|
|
|
model_1_results = sqlsExecutor.session.Sql(sqlStr).Query()
|
|
|
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
- model_2_results, err = sqlsExecutor.session.Sql(sqlStr).Execute()
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
sqlModel = 2
|
|
|
+ model_2_results, err = sqlsExecutor.session.Sql(sqlStr).Execute()
|
|
|
+
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
}
|
|
|
- } else {
|
|
|
- key := NewV4().String() + time.Now().String()
|
|
|
- sqlsExecutor.session.Engine.AddSql(key, sqlStr)
|
|
|
- parmaMap := parmasMap[k]
|
|
|
- switch sqlCmd {
|
|
|
- case "select", "desc":
|
|
|
- model_1_results = sqlsExecutor.session.SqlMapClient(key, &parmaMap).Query()
|
|
|
- case "insert", "delete", "update", "create":
|
|
|
- model_2_results, err = sqlsExecutor.session.SqlMapClient(key, &parmaMap).Execute()
|
|
|
- sqlModel = 2
|
|
|
+
|
|
|
+ if sqlModel == 1 {
|
|
|
+ if model_1_results.Error != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, model_1_results.Error
|
|
|
+ }
|
|
|
+
|
|
|
+ resultsMap[k] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
+ resultsMap[k] = model_1_results.Results
|
|
|
+
|
|
|
+ } else if sqlModel == 2 {
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ resultMap := make([]map[string]interface{}, 1)
|
|
|
+ resultMap[0] = make(map[string]interface{})
|
|
|
+
|
|
|
+ //todo all database support LastInsertId
|
|
|
+ LastInsertId, _ := model_2_results.LastInsertId()
|
|
|
+
|
|
|
+ resultMap[0]["LastInsertId"] = LastInsertId
|
|
|
+ RowsAffected, err := model_2_results.RowsAffected()
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, err
|
|
|
+ }
|
|
|
+ resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
+ resultsMap[k] = make([]map[string]interface{}, 1)
|
|
|
+ resultsMap[k] = resultMap
|
|
|
+
|
|
|
+ } else {
|
|
|
+ resultsMap[k] = nil
|
|
|
}
|
|
|
- sqlsExecutor.session.Engine.RemoveSql(key)
|
|
|
+
|
|
|
}
|
|
|
+ } else {
|
|
|
+ switch sqlsExecutor.parmas.(type) {
|
|
|
+ case map[string]map[string]interface{}:
|
|
|
+ parmasMap = sqlsExecutor.parmas.(map[string]map[string]interface{})
|
|
|
|
|
|
- if sqlModel == 1 {
|
|
|
- if model_1_results.Error != nil {
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
+ default:
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, ErrParamsType
|
|
|
+ }
|
|
|
+
|
|
|
+ for k, _ := range sqlsMap {
|
|
|
+ sqlStr := strings.TrimSpace(sqlsMap[k])
|
|
|
+ sqlCmd := strings.ToLower(strings.Split(sqlStr, " ")[0])
|
|
|
+ if parmasMap[k] == nil {
|
|
|
+ switch sqlCmd {
|
|
|
+ case "select", "desc":
|
|
|
+ sqlModel = 1
|
|
|
+ model_1_results = sqlsExecutor.session.Sql(sqlStr).Query()
|
|
|
+
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
+ sqlModel = 2
|
|
|
+ model_2_results, err = sqlsExecutor.session.Sql(sqlStr).Execute()
|
|
|
+
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ key := NewV4().String() + time.Now().String()
|
|
|
+ sqlsExecutor.session.Engine.AddSql(key, sqlStr)
|
|
|
+ parmaMap := parmasMap[k]
|
|
|
+ switch sqlCmd {
|
|
|
+ case "select", "desc":
|
|
|
+ sqlModel = 1
|
|
|
+ model_1_results = sqlsExecutor.session.SqlMapClient(key, &parmaMap).Query()
|
|
|
+
|
|
|
+ case "insert", "delete", "update", "create", "drop":
|
|
|
+ sqlModel = 2
|
|
|
+ model_2_results, err = sqlsExecutor.session.SqlMapClient(key, &parmaMap).Execute()
|
|
|
+
|
|
|
+ default:
|
|
|
+ sqlModel = 3
|
|
|
}
|
|
|
- return nil, nil, model_1_results.Error
|
|
|
+ sqlsExecutor.session.Engine.RemoveSql(key)
|
|
|
}
|
|
|
|
|
|
- resultsMap[k] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
- resultsMap[k] = model_1_results.Results
|
|
|
+ if sqlModel == 1 {
|
|
|
+ if model_1_results.Error != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil, nil, model_1_results.Error
|
|
|
+ }
|
|
|
|
|
|
- } else {
|
|
|
- if err != nil {
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ resultsMap[k] = make([]map[string]interface{}, len(model_1_results.Results))
|
|
|
+ resultsMap[k] = model_1_results.Results
|
|
|
+
|
|
|
+ } else if sqlModel == 2 {
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
}
|
|
|
+ return nil, nil, err
|
|
|
}
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
|
|
|
- resultMap := make([]map[string]interface{}, 1)
|
|
|
- resultMap[0] = make(map[string]interface{})
|
|
|
+ resultMap := make([]map[string]interface{}, 1)
|
|
|
+ resultMap[0] = make(map[string]interface{})
|
|
|
|
|
|
- //todo all database support LastInsertId
|
|
|
- LastInsertId, _ := model_2_results.LastInsertId()
|
|
|
+ //todo all database support LastInsertId
|
|
|
+ LastInsertId, _ := model_2_results.LastInsertId()
|
|
|
|
|
|
- resultMap[0]["LastInsertId"] = LastInsertId
|
|
|
- RowsAffected, err := model_2_results.RowsAffected()
|
|
|
- if err != nil {
|
|
|
- if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Rollback()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ resultMap[0]["LastInsertId"] = LastInsertId
|
|
|
+ RowsAffected, err := model_2_results.RowsAffected()
|
|
|
+ if err != nil {
|
|
|
+ if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
+ err1 := sqlsExecutor.session.Rollback()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
+ }
|
|
|
}
|
|
|
+ return nil, nil, err
|
|
|
}
|
|
|
- return nil, nil, err
|
|
|
- }
|
|
|
- resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
- resultsMap[k] = make([]map[string]interface{}, 1)
|
|
|
- resultsMap[k] = resultMap
|
|
|
+ resultMap[0]["RowsAffected"] = RowsAffected
|
|
|
+ resultsMap[k] = make([]map[string]interface{}, 1)
|
|
|
+ resultsMap[k] = resultMap
|
|
|
|
|
|
+ } else {
|
|
|
+ resultsMap[k] = nil
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
if sqlsExecutor.session.IsSqlFuc == true {
|
|
|
- err := sqlsExecutor.session.Commit()
|
|
|
- if err != nil {
|
|
|
- return nil, nil, err
|
|
|
+ err1 := sqlsExecutor.session.Commit()
|
|
|
+ if err1 != nil {
|
|
|
+ return nil, nil, err1
|
|
|
}
|
|
|
}
|
|
|
return nil, resultsMap, nil
|