Skip to content

Commit aa867e3

Browse files
authored
Merge pull request #14 from Becklyn/fix_in_array_filter
2 parents 0e03f8d + a2dca9a commit aa867e3

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# v4.1.2
2+
3+
- (bug) Add missing json marshal of values (not)inArray filter in postgres operator
4+
15
# v4.1.1
26

37
- (bug) Fix (not)inArray filter in postgres operator

postgres/filters.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package postgres
22

33
import (
4+
"encoding/json"
45
"fmt"
56
"strings"
67

@@ -237,7 +238,15 @@ func filterToCondition(column string, filter clerk.Filter) (sq.Sqlizer, error) {
237238
if len(filter.Values()) == 0 {
238239
return sq.Expr("1 = 2"), nil
239240
}
240-
selector := jsonKeyToSelector(column, filter.Key(), filter.Values(), false)
241+
values := filter.Values()
242+
for i, value := range values {
243+
valueAsJson, err := json.Marshal(value)
244+
if err != nil {
245+
return nil, err
246+
}
247+
values[i] = string(valueAsJson)
248+
}
249+
selector := jsonKeyToSelector(column, filter.Key(), values, false)
241250
variables := setOfVariables(len(filter.Values()))
242251
return sq.Expr(
243252
fmt.Sprintf("EXISTS( SELECT TRUE FROM jsonb_array_elements(%s) AS x(o) WHERE x.o IN %s )", selector, variables),
@@ -247,6 +256,14 @@ func filterToCondition(column string, filter clerk.Filter) (sq.Sqlizer, error) {
247256
if len(filter.Values()) == 0 {
248257
return sq.Expr("1 = 1"), nil
249258
}
259+
values := filter.Values()
260+
for i, value := range values {
261+
valueAsJson, err := json.Marshal(value)
262+
if err != nil {
263+
return nil, err
264+
}
265+
values[i] = string(valueAsJson)
266+
}
250267
selector := jsonKeyToSelector(column, filter.Key(), filter.Values(), false)
251268
variables := setOfVariables(len(filter.Values()))
252269
return sq.Expr(

0 commit comments

Comments
 (0)