yjp hai 1 ano
pai
achega
958089c418

+ 0 - 98
sdk/data_mapping/data_mapping.go

@@ -2,9 +2,7 @@ package data_mapping
 
 import (
 	"errors"
-	"github.com/iancoleman/strcase"
 	"reflect"
-	"strings"
 )
 
 type DataMapping struct {
@@ -36,99 +34,3 @@ func ParseDataMapping(e any) (*DataMapping, error) {
 		SqlMapping: sqlMapping,
 	}, nil
 }
-
-const (
-	sqlMappingTagPartSeparator         = ";"
-	sqlMappingTagPartKeyValueSeparator = ":"
-)
-
-const (
-	sqlMappingTagKey                 = "sqlmapping"
-	sqlMappingIgnore                 = "-"
-	sqlMappingColumn                 = "column"
-	sqlMappingKey                    = "key"
-	sqlMappingNotUpdate              = "notUpdate"
-	sqlMappingUpdateClear            = "updateClear"
-	sqlMappingNotQuery               = "notQuery"
-	sqlMappingQueryConditionCallback = "queryConditionCallback"
-)
-
-type SqlMapping struct {
-	ColumnMap map[string]SqlColumn
-}
-
-func parseSqlMapping(entityType reflect.Type) (*SqlMapping, error) {
-	sqlMapping := new(SqlMapping)
-	sqlMapping.ColumnMap = make(map[string]SqlColumn)
-
-	fieldNum := entityType.NumField()
-	for i := 0; i < fieldNum; i++ {
-		sqlColumn, err := parseSqlColumn(entityType.Field(i))
-		if err != nil {
-			return nil, err
-		}
-
-		if sqlColumn == nil {
-			continue
-		}
-
-		sqlMapping.ColumnMap[sqlColumn.Name] = *sqlColumn
-	}
-
-	return sqlMapping, nil
-}
-
-type SqlColumn struct {
-	Name                       string
-	IsKey                      bool
-	CanUpdate                  bool
-	CanUpdateClear             bool
-	CanQuery                   bool
-	NeedQueryConditionCallback bool
-}
-
-func parseSqlColumn(field reflect.StructField) (*SqlColumn, error) {
-	sqlColumn := &SqlColumn{
-		Name:                       strcase.ToSnake(field.Name),
-		IsKey:                      false,
-		CanUpdate:                  true,
-		CanUpdateClear:             false,
-		CanQuery:                   true,
-		NeedQueryConditionCallback: false,
-	}
-
-	sqlMappingTag, ok := field.Tag.Lookup(sqlMappingTagKey)
-	if !ok {
-		return sqlColumn, nil
-	}
-
-	if sqlMappingTag == sqlMappingIgnore {
-		return nil, nil
-	}
-
-	sqlMappingParts := strings.Split(sqlMappingTag, sqlMappingTagPartSeparator)
-	if sqlMappingParts != nil || len(sqlMappingParts) != 0 {
-		for _, sqlMappingPart := range sqlMappingParts {
-			sqlPartKeyValue := strings.Split(strings.TrimSpace(sqlMappingPart), sqlMappingTagPartKeyValueSeparator)
-			switch sqlPartKeyValue[0] {
-			case sqlMappingColumn:
-				sqlColumn.Name = strings.TrimSpace(sqlPartKeyValue[1])
-			case sqlMappingKey:
-				sqlColumn.IsKey = true
-				sqlColumn.CanUpdate = false
-			case sqlMappingNotUpdate:
-				sqlColumn.CanUpdate = false
-			case sqlMappingUpdateClear:
-				sqlColumn.CanUpdateClear = true
-			case sqlMappingNotQuery:
-				sqlColumn.CanQuery = false
-			case sqlMappingQueryConditionCallback:
-				sqlColumn.NeedQueryConditionCallback = true
-			default:
-				continue
-			}
-		}
-	}
-
-	return sqlColumn, nil
-}

+ 103 - 0
sdk/data_mapping/sql_mapping.go

@@ -0,0 +1,103 @@
+package data_mapping
+
+import (
+	"github.com/iancoleman/strcase"
+	"reflect"
+	"strings"
+)
+
+const (
+	sqlMappingTagPartSeparator         = ";"
+	sqlMappingTagPartKeyValueSeparator = ":"
+)
+
+const (
+	sqlMappingTagKey                 = "sqlmapping"
+	sqlMappingIgnore                 = "-"
+	sqlMappingColumn                 = "column"
+	sqlMappingKey                    = "key"
+	sqlMappingNotUpdate              = "notUpdate"
+	sqlMappingUpdateClear            = "updateClear"
+	sqlMappingNotQuery               = "notQuery"
+	sqlMappingQueryConditionCallback = "queryConditionCallback"
+)
+
+type SqlMapping struct {
+	ColumnMap map[string]SqlColumn
+}
+
+func parseSqlMapping(entityType reflect.Type) (*SqlMapping, error) {
+	sqlMapping := new(SqlMapping)
+	sqlMapping.ColumnMap = make(map[string]SqlColumn)
+
+	fieldNum := entityType.NumField()
+	for i := 0; i < fieldNum; i++ {
+		sqlColumn, err := parseSqlColumn(entityType.Field(i))
+		if err != nil {
+			return nil, err
+		}
+
+		if sqlColumn == nil {
+			continue
+		}
+
+		sqlMapping.ColumnMap[sqlColumn.Name] = *sqlColumn
+	}
+
+	return sqlMapping, nil
+}
+
+type SqlColumn struct {
+	Name                       string
+	IsKey                      bool
+	CanUpdate                  bool
+	CanUpdateClear             bool
+	CanQuery                   bool
+	NeedQueryConditionCallback bool
+}
+
+func parseSqlColumn(field reflect.StructField) (*SqlColumn, error) {
+	sqlColumn := &SqlColumn{
+		Name:                       strcase.ToSnake(field.Name),
+		IsKey:                      false,
+		CanUpdate:                  true,
+		CanUpdateClear:             false,
+		CanQuery:                   true,
+		NeedQueryConditionCallback: false,
+	}
+
+	sqlMappingTag, ok := field.Tag.Lookup(sqlMappingTagKey)
+	if !ok {
+		return sqlColumn, nil
+	}
+
+	if sqlMappingTag == sqlMappingIgnore {
+		return nil, nil
+	}
+
+	sqlMappingParts := strings.Split(sqlMappingTag, sqlMappingTagPartSeparator)
+	if sqlMappingParts != nil || len(sqlMappingParts) != 0 {
+		for _, sqlMappingPart := range sqlMappingParts {
+			sqlPartKeyValue := strings.Split(strings.TrimSpace(sqlMappingPart), sqlMappingTagPartKeyValueSeparator)
+			switch sqlPartKeyValue[0] {
+			case sqlMappingColumn:
+				sqlColumn.Name = strings.TrimSpace(sqlPartKeyValue[1])
+			case sqlMappingKey:
+				sqlColumn.IsKey = true
+				sqlColumn.CanUpdate = false
+			case sqlMappingNotUpdate:
+				sqlColumn.CanUpdate = false
+			case sqlMappingUpdateClear:
+				sqlColumn.CanUpdateClear = true
+			case sqlMappingNotQuery:
+				sqlColumn.CanQuery = false
+			case sqlMappingQueryConditionCallback:
+				sqlColumn.NeedQueryConditionCallback = true
+			default:
+				continue
+			}
+		}
+	}
+
+	return sqlColumn, nil
+}

+ 1 - 0
sdk/data_mapping/table_row.go

@@ -0,0 +1 @@
+package data_mapping

+ 3 - 0
test/resources.yaml

@@ -41,3 +41,6 @@ spec:
         type: integer
         comment: 学生数量
         default: 60
+      - name: created_time
+        type: "timestamp with time zone"
+        comment: 创建时间

+ 16 - 2
test/sdk_test.go

@@ -59,6 +59,10 @@ func TestBasic(t *testing.T) {
 				Column: "student_num",
 				Value:  strconv.FormatInt(int64(studentNum), 10),
 			},
+			{
+				Column: "created_time",
+				Value:  "'" + time.Now().Format(time.DateTime+".000000 +08:00") + "'",
+			},
 		},
 	}.Map()
 	if err != nil {
@@ -139,6 +143,10 @@ func TestRawSqlTemplate(t *testing.T) {
 	newClassName := strutils.SimpleUUID()
 	newStudentNum := rand.Int31n(100)
 
+	now := time.Now()
+	createdTime := now.Format(time.DateTime + ".000000 +08:00")
+	execeptedCreatedTime := now.Format("2006-01-02T15:04:05.000000+08:00")
+
 	insertExecuteParams, err := raw_sql_tpl.InsertExecuteParams{
 		TableName: tableName,
 		TableRows: []raw_sql_tpl.TableRow{
@@ -154,6 +162,10 @@ func TestRawSqlTemplate(t *testing.T) {
 				Column: "student_num",
 				Value:  strconv.FormatInt(int64(studentNum), 10),
 			},
+			{
+				Column: "created_time",
+				Value:  "'" + createdTime + "'",
+			},
 		},
 	}.Map()
 	if err != nil {
@@ -317,7 +329,8 @@ func TestRawSqlTemplate(t *testing.T) {
 
 	if queryResults[0]["id"].(string) != classID ||
 		queryResults[0]["name"].(string) != className ||
-		queryResults[0]["student_num"].(float64) != float64(studentNum) {
+		queryResults[0]["student_num"].(float64) != float64(studentNum) ||
+		queryResults[0]["created_time"].(string) != execeptedCreatedTime {
 		t.Fatal("查询数据不正确")
 	}
 
@@ -342,7 +355,8 @@ func TestRawSqlTemplate(t *testing.T) {
 
 	if queryResults[0]["id"].(string) != classID ||
 		queryResults[0]["name"].(string) != newClassName ||
-		queryResults[0]["student_num"].(float64) != float64(newStudentNum) {
+		queryResults[0]["student_num"].(float64) != float64(newStudentNum) ||
+		queryResults[0]["created_time"].(string) != execeptedCreatedTime {
 		t.Fatal("查询数据不正确")
 	}