mirror of
https://github.com/oarkflow/mq.git
synced 2025-10-07 08:50:54 +08:00
update
This commit is contained in:
@@ -49,14 +49,16 @@ func (h *SplitHandler) splitOperation(data map[string]any) map[string]any {
|
||||
result := make(map[string]any)
|
||||
fields := h.getTargetFields()
|
||||
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
|
||||
for key, value := range data {
|
||||
result[key] = value
|
||||
}
|
||||
|
||||
var allParts []string
|
||||
for _, field := range fields {
|
||||
if val, ok := data[field]; 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
|
||||
for i, part := range parts {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -121,6 +123,13 @@ func (h *SplitHandler) getTargetFields() []string {
|
||||
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 {
|
||||
if sep, ok := h.Payload.Data["separator"].(string); ok {
|
||||
return sep
|
||||
@@ -239,6 +248,9 @@ func (h *JoinHandler) getSourceField() 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 {
|
||||
var result []string
|
||||
for _, field := range fields {
|
||||
|
Reference in New Issue
Block a user