From cc46320a3ae9ec3d933ca5635f4b4259bd509cd6 Mon Sep 17 00:00:00 2001 From: Yves MENGELLE Date: Wed, 20 Mar 2024 18:46:28 +0100 Subject: [PATCH] feat(null): adding operators ISNULL and NOTNULL --- .../postgrest/PostgrestFilterOperation.java | 16 +++++++++++++ .../postgrest/mappers/IsNullMapper.java | 20 ++++++++++++++++ .../postgrest/mappers/NotNullMapper.java | 20 ++++++++++++++++ .../querydsl/postgrest/mappers/Operators.java | 4 ++++ .../postgrest/mappers/IsNullMapperTest.java | 23 +++++++++++++++++++ .../postgrest/mappers/NotNullMapperTest.java | 23 +++++++++++++++++++ 6 files changed, 106 insertions(+) create mode 100644 querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapper.java create mode 100644 querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapper.java create mode 100644 querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapperTest.java create mode 100644 querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapperTest.java diff --git a/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/PostgrestFilterOperation.java b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/PostgrestFilterOperation.java index 50188e3..dba23e5 100644 --- a/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/PostgrestFilterOperation.java +++ b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/PostgrestFilterOperation.java @@ -28,4 +28,20 @@ class CS implements FilterOperation { @ValidatedBy(StringValidator.class) class CD implements FilterOperation { } + + /** + * Not null. + * + * @since 1.3.3 + */ + class ISNULL implements FilterOperation { + } + + /** + * Is null. + * + * @since 1.3.3 + */ + class NOTNULL implements FilterOperation { + } } diff --git a/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapper.java b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapper.java new file mode 100644 index 0000000..235ba0e --- /dev/null +++ b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapper.java @@ -0,0 +1,20 @@ +package fr.ouestfrance.querydsl.postgrest.mappers; + +import fr.ouestfrance.querydsl.FilterOperation; +import fr.ouestfrance.querydsl.postgrest.PostgrestFilterOperation; +import fr.ouestfrance.querydsl.postgrest.model.Filter; +import fr.ouestfrance.querydsl.postgrest.model.impl.QueryFilter; + +public class IsNullMapper extends AbstractMapper { + + @Override + public Filter getFilter(String field, Object value) { + return QueryFilter.of(field, Operators.IS, null); + } + + + @Override + public Class operation() { + return PostgrestFilterOperation.ISNULL.class; + } +} diff --git a/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapper.java b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapper.java new file mode 100644 index 0000000..865a30a --- /dev/null +++ b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapper.java @@ -0,0 +1,20 @@ +package fr.ouestfrance.querydsl.postgrest.mappers; + +import fr.ouestfrance.querydsl.FilterOperation; +import fr.ouestfrance.querydsl.postgrest.PostgrestFilterOperation; +import fr.ouestfrance.querydsl.postgrest.model.Filter; +import fr.ouestfrance.querydsl.postgrest.model.impl.QueryFilter; + +public class NotNullMapper extends AbstractMapper { + + @Override + public Filter getFilter(String field, Object value) { + return QueryFilter.of(field, Operators.IS_NOT, null); + } + + + @Override + public Class operation() { + return PostgrestFilterOperation.NOTNULL.class; + } +} diff --git a/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/Operators.java b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/Operators.java index 91d4132..86f2688 100644 --- a/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/Operators.java +++ b/querydsl-postgrest/src/main/java/fr/ouestfrance/querydsl/postgrest/mappers/Operators.java @@ -56,6 +56,10 @@ public final class Operators { * is operation */ public static final String IS = "is"; + /** + * is not operation + */ + public static final String IS_NOT = "not.is"; /** * Contains operation for JSON/Range datatype */ diff --git a/querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapperTest.java b/querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapperTest.java new file mode 100644 index 0000000..8d18b15 --- /dev/null +++ b/querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/IsNullMapperTest.java @@ -0,0 +1,23 @@ +package fr.ouestfrance.querydsl.postgrest.mappers; + +import fr.ouestfrance.querydsl.model.SimpleFilter; +import fr.ouestfrance.querydsl.postgrest.PostgrestFilterOperation; +import fr.ouestfrance.querydsl.postgrest.builders.QueryFilterVisitor; +import fr.ouestfrance.querydsl.postgrest.model.Filter; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class IsNullMapperTest { + + @Test + void shouldMapIsNull() { + IsNullMapper mapper = new IsNullMapper(); + assertNotNull(mapper.operation()); + Filter result = mapper.map(new SimpleFilter("name", PostgrestFilterOperation.ISNULL.class, false, null), "John"); + assertNotNull(result); + QueryFilterVisitor visitor = new QueryFilterVisitor(); + result.accept(visitor); + assertNotNull(visitor.getValue()); + } +} diff --git a/querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapperTest.java b/querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapperTest.java new file mode 100644 index 0000000..1626b9c --- /dev/null +++ b/querydsl-postgrest/src/test/java/fr/ouestfrance/querydsl/postgrest/mappers/NotNullMapperTest.java @@ -0,0 +1,23 @@ +package fr.ouestfrance.querydsl.postgrest.mappers; + +import fr.ouestfrance.querydsl.model.SimpleFilter; +import fr.ouestfrance.querydsl.postgrest.PostgrestFilterOperation; +import fr.ouestfrance.querydsl.postgrest.builders.QueryFilterVisitor; +import fr.ouestfrance.querydsl.postgrest.model.Filter; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class NotNullMapperTest { + + @Test + void shouldMapNotNull() { + NotNullMapper mapper = new NotNullMapper(); + assertNotNull(mapper.operation()); + Filter result = mapper.map(new SimpleFilter("name", PostgrestFilterOperation.NOTNULL.class, false, null), "John"); + assertNotNull(result); + QueryFilterVisitor visitor = new QueryFilterVisitor(); + result.accept(visitor); + assertNotNull(visitor.getValue()); + } +}