From 856a5db8bbff05080f7a1113583f1e70e6a63eda Mon Sep 17 00:00:00 2001 From: huchenhao Date: Wed, 20 Mar 2024 11:50:08 +0800 Subject: [PATCH] feat: automatic injection parameters --- kis/pool.go | 7 ++++--- kis/serialize_json.go | 12 ++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/kis/pool.go b/kis/pool.go index 2c926e8..e38609e 100644 --- a/kis/pool.go +++ b/kis/pool.go @@ -113,10 +113,11 @@ func (pool *kisPool) CallFunction(ctx context.Context, fnName string, flow Flow) if argType.Kind() == reflect.Slice { value, err := funcDesc.FaasSerialize.DecodeParam(flow.Input(), argType) if err != nil { - return err + log.Logger().ErrorFX(ctx, "funcDesc.FaasSerialize.DecodeParam err=%v", err) + } else { + params = append(params, value) + continue } - params = append(params, value) - continue } params = append(params, reflect.Zero(argType)) } diff --git a/kis/serialize_json.go b/kis/serialize_json.go index 0313548..74f9585 100644 --- a/kis/serialize_json.go +++ b/kis/serialize_json.go @@ -29,7 +29,7 @@ func (f DefaultFaasSerialize) DecodeParam(arr common.KisRowArr, r reflect.Type) // 如果还失败,则尝试先序列化为 JSON 再反序列化 elem, err = decodeJSON(row, r.Elem()) if err != nil { - return reflect.Value{}, fmt.Errorf("failed to decode row: %v", err) + return reflect.Value{}, fmt.Errorf("failed to decode row: %v ", err) } } } @@ -62,19 +62,19 @@ func decodeString(row common.KisRow) (reflect.Value, error) { } } - return reflect.Value{}, fmt.Errorf("not a string") + return reflect.Value{}, fmt.Errorf("not a string ") } // 尝试先序列化为 JSON 再反序列化 func decodeJSON(row common.KisRow, elemType reflect.Type) (reflect.Value, error) { jsonBytes, err := json.Marshal(row) if err != nil { - return reflect.Value{}, fmt.Errorf("failed to marshal row to JSON: %v", err) + return reflect.Value{}, fmt.Errorf("failed to marshal row to JSON: %v ", err) } elem := reflect.New(elemType).Interface() if err := json.Unmarshal(jsonBytes, elem); err != nil { - return reflect.Value{}, fmt.Errorf("failed to unmarshal JSON to element: %v", err) + return reflect.Value{}, fmt.Errorf("failed to unmarshal JSON to element: %v ", err) } return reflect.ValueOf(elem).Elem(), nil @@ -90,7 +90,7 @@ func (f DefaultFaasSerialize) EncodeParam(i interface{}) (common.KisRowArr, erro // 序列化每个元素为 JSON 字符串,并将其添加到切片中。 jsonBytes, err := json.Marshal(slice.Index(i).Interface()) if err != nil { - return nil, fmt.Errorf("failed to marshal element to JSON: %v", err) + return nil, fmt.Errorf("failed to marshal element to JSON: %v ", err) } arr = append(arr, string(jsonBytes)) } @@ -98,7 +98,7 @@ func (f DefaultFaasSerialize) EncodeParam(i interface{}) (common.KisRowArr, erro // 如果不是切片或数组类型,则直接序列化整个结构体为 JSON 字符串。 jsonBytes, err := json.Marshal(i) if err != nil { - return nil, fmt.Errorf("failed to marshal element to JSON: %v", err) + return nil, fmt.Errorf("failed to marshal element to JSON: %v ", err) } arr = append(arr, string(jsonBytes)) }