dialect/sql/sqljson: cast marshaled args as json (#3008)

This commit is contained in:
Ariel Mashraki
2022-10-11 14:15:01 +03:00
committed by GitHub
parent a26e21ff6a
commit cf137c665a
14 changed files with 310 additions and 34 deletions

View File

@@ -457,17 +457,17 @@ func TestAppend(t *testing.T) {
sqljson.Append(u, "c", []string{"a"})
return u
}(),
wantQuery: "UPDATE `t` SET `c` = CASE WHEN (JSON_TYPE(`c`, '$') IS NULL OR JSON_TYPE(`c`, '$') = 'null') THEN JSON_ARRAY(?) ELSE JSON_INSERT(`c`, '$[#]', ?) END",
wantArgs: []any{"a", "a"},
wantQuery: "UPDATE `t` SET `c` = CASE WHEN (JSON_TYPE(`c`, '$') IS NULL OR JSON_TYPE(`c`, '$') = 'null') THEN ? ELSE JSON_INSERT(`c`, '$[#]', ?) END",
wantArgs: []any{`["a"]`, "a"},
},
{
input: func() sql.Querier {
u := sql.Dialect(dialect.SQLite).Update("t")
sqljson.Append(u, "c", []string{"a"}, sqljson.Path("a"))
sqljson.Append(u, "c", []any{"a", struct{}{}}, sqljson.Path("a"))
return u
}(),
wantQuery: "UPDATE `t` SET `c` = CASE WHEN (JSON_TYPE(`c`, '$.a') IS NULL OR JSON_TYPE(`c`, '$.a') = 'null') THEN JSON_SET(`c`, '$.a', JSON_ARRAY(?)) ELSE JSON_INSERT(`c`, '$.a[#]', ?) END",
wantArgs: []any{"a", "a"},
wantQuery: "UPDATE `t` SET `c` = CASE WHEN (JSON_TYPE(`c`, '$.a') IS NULL OR JSON_TYPE(`c`, '$.a') = 'null') THEN JSON_SET(`c`, '$.a', JSON(?)) ELSE JSON_INSERT(`c`, '$.a[#]', ?, '$.a[#]', JSON(?)) END",
wantArgs: []any{`["a",{}]`, "a", "{}"},
},
{
input: func() sql.Querier {