浏览代码

修改bug

yjp 1 年之前
父节点
当前提交
fac0f77d41
共有 2 个文件被更改,包括 130 次插入16 次删除
  1. 39 4
      sdk/sql.go
  2. 91 12
      test/sdk_test.go

+ 39 - 4
sdk/sql.go

@@ -10,8 +10,9 @@ import (
 	"time"
 )
 
-type RawSqlExecutor interface {
+type SqlExecutor interface {
 	ExecuteRawSql(sql string, executeParams map[string]any) ([]map[string]any, error)
+	ExecuteSql(name string, executeParams map[string]any) ([]map[string]any, error)
 }
 
 const (
@@ -22,7 +23,7 @@ const (
 
 type InsertCallback[T any] func(e T, fieldName string, value any) (retValue any, err error)
 
-func Insert[T any](executor RawSqlExecutor, tableName string, e T, callback InsertCallback[T]) error {
+func Insert[T any](executor SqlExecutor, tableName string, e T, callback InsertCallback[T]) error {
 	if executor == nil {
 		return errors.New("没有传递执行器")
 	}
@@ -101,7 +102,7 @@ func Insert[T any](executor RawSqlExecutor, tableName string, e T, callback Inse
 	return nil
 }
 
-func Delete[T any](executor RawSqlExecutor, tableName string, e T) error {
+func Delete[T any](executor SqlExecutor, tableName string, e T) error {
 	if executor == nil {
 		return errors.New("没有传递执行器")
 	}
@@ -162,7 +163,7 @@ func Delete[T any](executor RawSqlExecutor, tableName string, e T) error {
 
 type UpdateCallback[T any] func(e T, fieldName string, value any) (retValue any, err error)
 
-func Update[T any](executor RawSqlExecutor, tableName string, e T, callback UpdateCallback[T]) error {
+func Update[T any](executor SqlExecutor, tableName string, e T, callback UpdateCallback[T]) error {
 	if executor == nil {
 		return errors.New("没有传递执行器")
 	}
@@ -254,6 +255,40 @@ func Update[T any](executor RawSqlExecutor, tableName string, e T, callback Upda
 	return nil
 }
 
+func ExecuteRawSql(executor SqlExecutor, sql string, executeParams map[string]any) ([]map[string]any, error) {
+	if executor == nil {
+		return nil, errors.New("没有传递执行器")
+	}
+
+	if strutils.IsStringEmpty(sql) {
+		return nil, errors.New("没有sql")
+	}
+
+	tableRows, err := executor.ExecuteRawSql(sql, executeParams)
+	if err != nil {
+		return nil, err
+	}
+
+	return tableRows, nil
+}
+
+func ExecuteSql(executor SqlExecutor, name string, executeParams map[string]any) ([]map[string]any, error) {
+	if executor == nil {
+		return nil, errors.New("没有传递执行器")
+	}
+
+	if strutils.IsStringEmpty(name) {
+		return nil, errors.New("没有sql资源名称")
+	}
+
+	tableRows, err := executor.ExecuteSql(name, executeParams)
+	if err != nil {
+		return nil, err
+	}
+
+	return tableRows, nil
+}
+
 func parseValue(value any) (string, error) {
 	switch v := value.(type) {
 	case string:

+ 91 - 12
test/sdk_test.go

@@ -104,6 +104,13 @@ func TestBasic(t *testing.T) {
 		t.Fatal(err)
 	}
 
+	defer func() {
+		err = sdk.GetInstance().DeleteSQL(deleteSql)
+		if err != nil {
+			t.Fatal(err)
+		}
+	}()
+
 	_, err = sdk.GetInstance().ExecuteRawSql(raw_sql_tpl.InsertTpl, insertExecuteParams)
 	if err != nil {
 		t.Fatal(err)
@@ -482,23 +489,51 @@ func TestSqlResult(t *testing.T) {
 }
 
 func TestSql(t *testing.T) {
-	err := sdk.InitInstance(token, address, httpPort, grpcPort, namespace, dataSource)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	defer func() {
-		err := sdk.DestroyInstance()
-		if err != nil {
-			t.Fatal(err)
-		}
-	}()
-
 	classID := strutils.SimpleUUID()
 	className := strutils.SimpleUUID()
 	studentNum := rand.Int31n(100)
 	newClassName := strutils.SimpleUUID()
 	newStudentNum := rand.Int31n(100)
+	now := time.Now()
+	nowStr := now.Format(time.DateTime + ".000000 +08:00")
+
+	insertExecuteParams, err := raw_sql_tpl.InsertExecuteParams{
+		TableName: tableName,
+		TableRows: []raw_sql_tpl.TableRow{
+			{
+				Column: "id",
+				Value:  "'" + classID + "'",
+			},
+			{
+				Column: "name",
+				Value:  "'" + className + "'",
+			},
+			{
+				Column: "student_num",
+				Value:  strconv.FormatInt(int64(studentNum), 10),
+			},
+			{
+				Column: "graduated_time",
+				Value:  "'" + nowStr + "'",
+			},
+			{
+				Column: "created_time",
+				Value:  "'" + nowStr + "'",
+			},
+			{
+				Column: "last_updated_time",
+				Value:  "'" + nowStr + "'",
+			},
+		},
+	}.Map()
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	deleteExecuteParams := map[string]any{
+		"table_name": tableName,
+		"id":         classID,
+	}
 
 	class := &Class{
 		ID:            classID,
@@ -516,6 +551,30 @@ func TestSql(t *testing.T) {
 		Ignored:       "",
 	}
 
+	err = sdk.InitInstance(token, address, httpPort, grpcPort, namespace, dataSource)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	defer func() {
+		err := sdk.DestroyInstance()
+		if err != nil {
+			t.Fatal(err)
+		}
+	}()
+
+	err = sdk.GetInstance().CreateSQL(deleteSql, sqlSpec.ToMap())
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	defer func() {
+		err = sdk.GetInstance().DeleteSQL(deleteSql)
+		if err != nil {
+			t.Fatal(err)
+		}
+	}()
+
 	err = sdk.Insert(sdk.GetInstance(), tableName, class, func(e *Class, fieldName string, value any) (retValue any, err error) {
 		return value, nil
 	})
@@ -535,6 +594,16 @@ func TestSql(t *testing.T) {
 		t.Fatal(err)
 	}
 
+	_, err = sdk.ExecuteRawSql(sdk.GetInstance(), raw_sql_tpl.InsertTpl, insertExecuteParams)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	_, err = sdk.ExecuteSql(sdk.GetInstance(), deleteSql, deleteExecuteParams)
+	if err != nil {
+		t.Fatal(err)
+	}
+
 	err = sdk.GetInstance().Transaction(func(tx *sdk.Transaction) error {
 		err = sdk.Insert(tx, tableName, class, func(e *Class, fieldName string, value any) (retValue any, err error) {
 			return value, nil
@@ -555,6 +624,16 @@ func TestSql(t *testing.T) {
 			t.Fatal(err)
 		}
 
+		_, err = sdk.ExecuteRawSql(tx, raw_sql_tpl.InsertTpl, insertExecuteParams)
+		if err != nil {
+			t.Fatal(err)
+		}
+
+		_, err = sdk.ExecuteSql(tx, deleteSql, deleteExecuteParams)
+		if err != nil {
+			t.Fatal(err)
+		}
+
 		return nil
 	})
 	if err != nil {