From 9b1fb21872431856c4ab69860cce8deace0056cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Tue, 24 Mar 2020 22:43:25 +0100 Subject: [PATCH] Allow complex expressions for field mapping condition --- pkg/migrate/stream.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pkg/migrate/stream.go b/pkg/migrate/stream.go index 555e99bc8..e09fbfbc6 100644 --- a/pkg/migrate/stream.go +++ b/pkg/migrate/stream.go @@ -2,6 +2,7 @@ package migrate import ( "bytes" + "context" "encoding/csv" "encoding/json" "errors" @@ -186,8 +187,21 @@ func checkWhere(where interface{}, row []string, hMap map[string]int) bool { return true } - pts := strings.Split(ww, "=") - org := pts[0] - val := pts[1] - return row[hMap[org]] == val + ev, err := types.Exprs().NewEvaluable(ww) + if err != nil { + panic(err) + } + + // prep payload + pr := map[string]string{} + for k, v := range hMap { + pr[k] = row[v] + } + + rr, err := ev.EvalBool(context.Background(), pr) + if err != nil { + panic(err) + } + + return rr }