Null equivalence - update filter (#16123)

This commit is contained in:
Etienne
2025-11-27 14:31:39 +01:00
committed by GitHub
parent 76ed82b598
commit 57ae12ff7c
7 changed files with 475 additions and 56 deletions
@@ -4,10 +4,6 @@ export const POSTGRES_DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE = '';
export const DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE = '';
export const DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE = {};
export const POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE = '{}';
export const DEFAULT_ARRAY_FIELD_NULL_EQUIVALENT_VALUE = [];
export const POSTGRES_DEFAULT_ARRAY_FIELD_NULL_EQUIVALENT_VALUE = '{}';
@@ -46,7 +42,6 @@ const DEFAULT_FULL_NAME_FIELD_NULL_EQUIVALENT_VALUE = {
const DEFAULT_ACTOR_FIELD_NULL_EQUIVALENT_VALUE = {
name: DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE,
context: DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE,
};
const DEFAULT_RICH_TEXT_V2_FIELD_NULL_EQUIVALENT_VALUE = {
@@ -2,7 +2,6 @@ import { FieldMetadataType } from 'twenty-shared/types';
import {
POSTGRES_DEFAULT_ARRAY_FIELD_NULL_EQUIVALENT_VALUE,
POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE,
POSTGRES_DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE,
} from 'src/engine/api/common/common-args-processors/data-arg-processor/constants/null-equivalent-values.constant';
import { findPostgresDefaultNullEquivalentValue } from 'src/engine/api/common/common-args-processors/data-arg-processor/utils/find-postgres-default-null-equivalent-value.util';
@@ -41,35 +40,6 @@ describe('findPostgresDefaultNullEquivalentValue', () => {
});
});
describe('RAW_JSON', () => {
it('should return POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE for null', () => {
expect(
findPostgresDefaultNullEquivalentValue(
null,
FieldMetadataType.RAW_JSON,
),
).toBe(POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE);
});
it('should return POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE for empty object', () => {
expect(
findPostgresDefaultNullEquivalentValue(
{},
FieldMetadataType.RAW_JSON,
),
).toBe(POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE);
});
it("should return POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE for 'NULL'", () => {
expect(
findPostgresDefaultNullEquivalentValue(
'NULL',
FieldMetadataType.RAW_JSON,
),
).toBe(POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE);
});
});
describe('ARRAY', () => {
it('should return POSTGRES_DEFAULT_ARRAY_FIELD_NULL_EQUIVALENT_VALUE for null', () => {
expect(
@@ -112,7 +82,7 @@ describe('findPostgresDefaultNullEquivalentValue', () => {
FieldMetadataType.ACTOR,
'context',
),
).toBe(POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE);
).toBe(undefined);
});
});
@@ -209,7 +179,7 @@ describe('findPostgresDefaultNullEquivalentValue', () => {
FieldMetadataType.RICH_TEXT_V2,
'blocknote',
),
).toBe(POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE);
).toBe(undefined);
});
it('should return text default for markdown', () => {
@@ -2,11 +2,9 @@ import { FieldMetadataType } from 'twenty-shared/types';
import {
POSTGRES_DEFAULT_ARRAY_FIELD_NULL_EQUIVALENT_VALUE,
POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE,
POSTGRES_DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE,
} from 'src/engine/api/common/common-args-processors/data-arg-processor/constants/null-equivalent-values.constant';
import { isNullEquivalentArrayFieldValue } from 'src/engine/api/common/common-args-processors/data-arg-processor/utils/is-null-equivalent-array-field-value.util';
import { isNullEquivalentRawJsonFieldValue } from 'src/engine/api/common/common-args-processors/data-arg-processor/utils/is-null-equivalent-raw-json-field-value.util';
import { isNullEquivalentTextFieldValue } from 'src/engine/api/common/common-args-processors/data-arg-processor/utils/is-null-equivalent-text-field-value.util';
export const findPostgresDefaultNullEquivalentValue = (
@@ -19,10 +17,7 @@ export const findPostgresDefaultNullEquivalentValue = (
return isNullEquivalentTextFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE
: undefined;
case FieldMetadataType.RAW_JSON:
return isNullEquivalentRawJsonFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE
: undefined;
case FieldMetadataType.MULTI_SELECT:
case FieldMetadataType.ARRAY:
return isNullEquivalentArrayFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_ARRAY_FIELD_NULL_EQUIVALENT_VALUE
@@ -33,10 +28,6 @@ export const findPostgresDefaultNullEquivalentValue = (
return isNullEquivalentTextFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE
: undefined;
case 'context':
return isNullEquivalentRawJsonFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE
: undefined;
default:
return undefined;
}
@@ -128,10 +119,6 @@ export const findPostgresDefaultNullEquivalentValue = (
}
case FieldMetadataType.RICH_TEXT_V2: {
switch (key) {
case 'blocknote':
return isNullEquivalentRawJsonFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_RAW_JSON_FIELD_NULL_EQUIVALENT_VALUE
: undefined;
case 'markdown':
return isNullEquivalentTextFieldValue(value) || value === 'NULL'
? POSTGRES_DEFAULT_TEXT_FIELD_NULL_EQUIVALENT_VALUE