From b636050aaa97147ba1516450d37d0454e67de408 Mon Sep 17 00:00:00 2001 From: klarysz <klarysz@viantinc.com> Date: Wed, 13 Jul 2022 23:56:05 +0200 Subject: [PATCH] patched criteria column in --- cmd/cli_test.go | 2 +- cmd/testdata/case003_columns_codec/events.sql | 23 +++++++++++-------- cmd/testdata/case003_columns_codec/log.txt | 5 +++- router/criteria/parse.go | 7 +++++- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/cmd/cli_test.go b/cmd/cli_test.go index f94ff6d7..b1b312ca 100644 --- a/cmd/cli_test.go +++ b/cmd/cli_test.go @@ -78,7 +78,7 @@ func TestRun(t *testing.T) { { description: "column codec", URI: "case003_columns_codec", - args: []string{"-N=events", "-D=sqlite3", "-X=testdata/case003_columns_codec/events.sql"}, + args: []string{"-N=events", "-D=sqlite3", "-A=/tmp/datly/generator/db.db", "-X=testdata/case003_columns_codec/events.sql"}, viewURL: "/v1/api/meta/view/dev/events", dataURL: "/v1/api/dev/events", dataMethod: http.MethodGet, diff --git a/cmd/testdata/case003_columns_codec/events.sql b/cmd/testdata/case003_columns_codec/events.sql index b7d1b77f..ef468ae5 100644 --- a/cmd/testdata/case003_columns_codec/events.sql +++ b/cmd/testdata/case003_columns_codec/events.sql @@ -1,10 +1,13 @@ -SELECT events.*, - name, - (CASE - WHEN COLUMN_X = 1 THEN - 'x1,x2' - WHEN COLUMN_X = 2 THEN - 'x3,x4' - ELSE '' - END) AS slice /* {"Codec":{"Ref":"AsStrings"}} */ -FROM events as events \ No newline at end of file +SELECT events.* +-- event_type.* +FROM ( + SELECT id, + name, + (CASE + WHEN COLUMN_X = 1 THEN + 'x1,x2' + WHEN COLUMN_X = 2 THEN + 'x3,x4' + END) AS slice /* {"Codec":{"Ref":"AsStrings"}} */ + FROM events + ) events diff --git a/cmd/testdata/case003_columns_codec/log.txt b/cmd/testdata/case003_columns_codec/log.txt index 6f4ee2df..d7263560 100644 --- a/cmd/testdata/case003_columns_codec/log.txt +++ b/cmd/testdata/case003_columns_codec/log.txt @@ -32,7 +32,7 @@ } ---------- connections: ----------- mem://localhost/dev/Datly/dependencies/connections.yamlConnectors: - - DSN: ${Username}:${Password}@tcp(localhost:3306)/dev?parseTime=true + - DSN: /tmp/datly/generator/db.db Driver: sqlite3 Name: dev Secret: @@ -48,6 +48,7 @@ Resource: - CaseFormat: lc Connector: Ref: dev + FromURL: events_from.sql Name: events Selector: Constraints: @@ -60,6 +61,7 @@ Resource: Projection: true Limit: 40 Table: events + UseBindingPositions: true Routes: - Cardinality: Many CaseFormat: lc @@ -73,6 +75,7 @@ Routes: - '*' ExposeHeaders: - '*' + EnableAudit: false Method: GET Namespace: ev: events diff --git a/router/criteria/parse.go b/router/criteria/parse.go index 63b9b4ed..15d94cbc 100644 --- a/router/criteria/parse.go +++ b/router/criteria/parse.go @@ -131,7 +131,12 @@ func matchDataSet(cursor *parsly.Cursor, columns view.ColumnIndex, column *view. return dataSetCursor.NewError(comaMatcher) } - if err := matchFieldValue(valueCursor, columns, column.ColumnType(), column.Format, buffer, placeholders, methods); err != nil { + columnType := column.ColumnType() + if columnType.Kind() == reflect.Ptr { + columnType = columnType.Elem() + } + + if err := matchFieldValue(valueCursor, columns, columnType, column.Format, buffer, placeholders, methods); err != nil { return err }