From 81e02a3c1679c08f577b4cbeb73e9e7e7f4cd6f4 Mon Sep 17 00:00:00 2001 From: Damian Stasik Date: Wed, 6 Oct 2021 18:36:49 +0200 Subject: [PATCH] feat: add isNull and isNotNull filters --- src/lib/Filters.js | 24 +++++++++++++++++++----- src/lib/queryFromFilters.js | 6 ++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/lib/Filters.js b/src/lib/Filters.js index f95a705a93..0958f429ae 100644 --- a/src/lib/Filters.js +++ b/src/lib/Filters.js @@ -163,14 +163,24 @@ export const Constraints = { field: null, comparable: false }, + isNull: { + name: 'is null', + comparable: true, + field: null, + }, + isNotNull: { + name: 'is not null', + comparable: true, + field: null, + }, }; export const FieldConstraints = { - 'Pointer': [ 'exists', 'dne', 'eq', 'neq', 'unique' ], - 'Boolean': [ 'exists', 'dne', 'eq', 'unique' ], - 'Number': [ 'exists', 'dne', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'unique' ], - 'String': [ 'exists', 'dne', 'eq', 'neq', 'starts', 'ends', 'stringContainsString', 'unique' ], - 'Date': [ 'exists', 'dne', 'before', 'after', 'unique' ], + 'Pointer': [ 'exists', 'dne', 'eq', 'neq', 'unique', 'isNull', 'isNotNull' ], + 'Boolean': [ 'exists', 'dne', 'eq', 'unique', 'isNull', 'isNotNull' ], + 'Number': [ 'exists', 'dne', 'eq', 'neq', 'lt', 'lte', 'gt', 'gte', 'unique', 'isNull', 'isNotNull' ], + 'String': [ 'exists', 'dne', 'eq', 'neq', 'starts', 'ends', 'stringContainsString', 'unique', 'isNull', 'isNotNull' ], + 'Date': [ 'exists', 'dne', 'before', 'after', 'unique', 'isNull', 'isNotNull' ], 'Object': [ 'exists', 'dne', @@ -183,6 +193,8 @@ export const FieldConstraints = { 'keyLt', 'keyLte', 'unique', + 'isNull', + 'isNotNull' ], 'Array': [ 'exists', @@ -193,6 +205,8 @@ export const FieldConstraints = { 'doesNotContainNumber', 'containsAny', 'doesNotContainAny', + 'isNull', + 'isNotNull' ] }; diff --git a/src/lib/queryFromFilters.js b/src/lib/queryFromFilters.js index bd74075c65..046755eab7 100644 --- a/src/lib/queryFromFilters.js +++ b/src/lib/queryFromFilters.js @@ -104,6 +104,12 @@ function addConstraint(query, filter) { case 'keyLte': addQueryConstraintFromObject(query, filter, 'lessThanOrEqualTo'); break; + case 'isNull': + query.equalTo(filter.get('field'), null); + break; + case 'isNotNull': + query.notEqualTo(filter.get('field'), null); + break; } return query; }