This commit is contained in:
sujit
2025-08-06 10:59:05 +05:45
parent f728f89ff9
commit 291550fcc6
2 changed files with 32 additions and 5 deletions

View File

@@ -141,6 +141,7 @@ func testSplitJoinHandler() {
splitHandler := handlers.NewSplitHandler("split-test") splitHandler := handlers.NewSplitHandler("split-test")
splitConfig := dag.Payload{ splitConfig := dag.Payload{
Data: map[string]any{ Data: map[string]any{
"operation": "split",
"fields": []string{"full_name", "skills"}, "fields": []string{"full_name", "skills"},
"separator": " ", "separator": " ",
}, },
@@ -155,6 +156,7 @@ func testSplitJoinHandler() {
splitHandler2 := handlers.NewSplitHandler("split-test-2") splitHandler2 := handlers.NewSplitHandler("split-test-2")
splitConfig2 := dag.Payload{ splitConfig2 := dag.Payload{
Data: map[string]any{ Data: map[string]any{
"operation": "split",
"fields": []string{"tags"}, "fields": []string{"tags"},
"separator": ",", "separator": ",",
}, },
@@ -176,6 +178,7 @@ func testSplitJoinHandler() {
joinHandler := handlers.NewJoinHandler("join-test") joinHandler := handlers.NewJoinHandler("join-test")
joinConfig := dag.Payload{ joinConfig := dag.Payload{
Data: map[string]any{ Data: map[string]any{
"operation": "join",
"source_fields": []string{"title", "first_name", "middle_name", "last_name"}, "source_fields": []string{"title", "first_name", "middle_name", "last_name"},
"target_field": "full_name_with_title", "target_field": "full_name_with_title",
"separator": " ", "separator": " ",
@@ -186,6 +189,18 @@ func testSplitJoinHandler() {
result = runHandler(joinHandler, joinData, "Join Operation") result = runHandler(joinHandler, joinData, "Join Operation")
printResult("String joining", result) printResult("String joining", result)
printRequestConfigResult(joinData, joinConfig, result) printRequestConfigResult(joinData, joinConfig, result)
fmt.Printf("Split Test Data: %+v\n", testData)
fmt.Printf("Split Config: %+v\n", splitConfig.Data)
fmt.Printf("Split Result: %+v\n", result)
fmt.Printf("Split Test Data (comma): %+v\n", testData)
fmt.Printf("Split Config (comma): %+v\n", splitConfig2.Data)
fmt.Printf("Split Result (comma): %+v\n", result)
fmt.Printf("Join Test Data: %+v\n", joinData)
fmt.Printf("Join Config: %+v\n", joinConfig.Data)
fmt.Printf("Join Result: %+v\n", result)
} }
func testFlattenHandler() { func testFlattenHandler() {

View File

@@ -49,14 +49,16 @@ func (h *SplitHandler) splitOperation(data map[string]any) map[string]any {
result := make(map[string]any) result := make(map[string]any)
fields := h.getTargetFields() fields := h.getTargetFields()
separator := h.getSeparator() separator := h.getSeparator()
targetField := h.getTargetField()
fmt.Printf("Split Operation: Fields=%v, Separator='%s'\n", fields, separator) fmt.Printf("Split Operation: Fields=%v, Separator='%s', TargetField='%s'\n", fields, separator, targetField)
// Copy all original data // Copy all original data
for key, value := range data { for key, value := range data {
result[key] = value result[key] = value
} }
var allParts []string
for _, field := range fields { for _, field := range fields {
if val, ok := data[field]; ok { if val, ok := data[field]; ok {
if str, ok := val.(string); ok { if str, ok := val.(string); ok {
@@ -67,15 +69,15 @@ func (h *SplitHandler) splitOperation(data map[string]any) map[string]any {
// Create individual fields for each part // Create individual fields for each part
for i, part := range parts { for i, part := range parts {
result[fmt.Sprintf("%s_%d", field, i)] = strings.TrimSpace(part) result[fmt.Sprintf("%s_%d", field, i)] = strings.TrimSpace(part)
allParts = append(allParts, strings.TrimSpace(part))
} }
// Also store as array
result[field+"_parts"] = parts
result[field+"_count"] = len(parts)
} }
} }
} }
// Store all parts in the target field
result[targetField] = allParts
return result return result
} }
@@ -121,6 +123,13 @@ func (h *SplitHandler) getTargetFields() []string {
return nil return nil
} }
func (h *SplitHandler) getTargetField() string {
if field, ok := h.Payload.Data["target_field"].(string); ok {
return field
}
return "split_result" // Default target field
}
func (h *SplitHandler) getSeparator() string { func (h *SplitHandler) getSeparator() string {
if sep, ok := h.Payload.Data["separator"].(string); ok { if sep, ok := h.Payload.Data["separator"].(string); ok {
return sep return sep
@@ -239,6 +248,9 @@ func (h *JoinHandler) getSourceField() string {
} }
func (h *JoinHandler) getSourceFields() []string { func (h *JoinHandler) getSourceFields() []string {
if fields, ok := h.Payload.Data["source_fields"].([]string); ok {
return fields
}
if fields, ok := h.Payload.Data["source_fields"].([]interface{}); ok { if fields, ok := h.Payload.Data["source_fields"].([]interface{}); ok {
var result []string var result []string
for _, field := range fields { for _, field := range fields {