sql/sqljson: add support for ValueIn/ValueNotIn (#2882)

This commit is contained in:
Ariel Mashraki
2022-08-24 17:58:44 +03:00
committed by GitHub
parent f3b6dd9d7e
commit 79fe0ebcd6
4 changed files with 131 additions and 31 deletions

View File

@@ -270,6 +270,46 @@ func Predicates(t *testing.T, client *ent.Client) {
require.NoError(t, err)
require.Equal(t, 1, count)
t.Run("ValueIn", func(t *testing.T) {
count, err = client.User.Query().Where(func(s *sql.Selector) {
s.Where(sqljson.ValueIn(user.FieldURL, []any{"https", "http"}, sqljson.Path("Scheme")))
}).Count(ctx)
require.NoError(t, err)
require.Equal(t, 1, count)
count, err = client.User.Query().Where(func(s *sql.Selector) {
s.Where(sqljson.ValueIn(user.FieldURL, []any{"https", "ftp"}, sqljson.Path("Scheme")))
}).Count(ctx)
require.NoError(t, err)
require.Equal(t, 2, count)
count, err = client.User.Query().Where(func(s *sql.Selector) {
s.Where(sqljson.ValueIn(user.FieldURL, []any{"a", "b"}, sqljson.Path("Scheme")))
}).Count(ctx)
require.NoError(t, err)
require.Zero(t, count)
})
t.Run("ValueNotIn", func(t *testing.T) {
count, err = client.User.Query().Where(func(s *sql.Selector) {
s.Where(sqljson.ValueNotIn(user.FieldURL, []any{"https", "http"}, sqljson.Path("Scheme")))
}).Count(ctx)
require.NoError(t, err)
require.Equal(t, 1, count)
count, err = client.User.Query().Where(func(s *sql.Selector) {
s.Where(sqljson.ValueNotIn(user.FieldURL, []any{"https", "ftp"}, sqljson.Path("Scheme")))
}).Count(ctx)
require.NoError(t, err)
require.Equal(t, 0, count)
count, err = client.User.Query().Where(func(s *sql.Selector) {
s.Where(sqljson.ValueNotIn(user.FieldURL, []any{"a", "b"}, sqljson.Path("Scheme")))
}).Count(ctx)
require.NoError(t, err)
require.Equal(t, 2, count)
})
client.User.Delete().ExecX(ctx)
users, err = client.User.CreateBulk(
client.User.Create().SetT(&schema.T{I: 1, F: 1.1, T: &schema.T{I: 10}}),