Null equivalence - remove feature flag (#16222)

This commit is contained in:
Etienne
2025-12-01 19:06:24 +01:00
committed by GitHub
parent da7536124e
commit 68c429a54a
23 changed files with 61 additions and 249 deletions
@@ -15,5 +15,4 @@ export enum FeatureFlagKey {
IS_WORKFLOW_RUN_STOPPAGE_ENABLED = 'IS_WORKFLOW_RUN_STOPPAGE_ENABLED',
IS_DASHBOARD_V2_ENABLED = 'IS_DASHBOARD_V2_ENABLED',
IS_GLOBAL_WORKSPACE_DATASOURCE_ENABLED = 'IS_GLOBAL_WORKSPACE_DATASOURCE_ENABLED',
IS_NULL_EQUIVALENCE_ENABLED = 'IS_NULL_EQUIVALENCE_ENABLED',
}
@@ -16,7 +16,6 @@ import { getCompositeTypeOrThrow } from 'src/engine/metadata-modules/field-metad
import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util';
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
import { buildFieldMapsFromFlatObjectMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/build-field-maps-from-flat-object-metadata.util';
import { computeUniqueIndexWhereClause } from 'src/engine/metadata-modules/index-metadata/utils/compute-unique-index-where-clause.util';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
@Injectable()
@@ -148,17 +147,6 @@ export class UpsertRecordService {
? conflictPathsUniqueFieldsToUpdate
: ['id'];
//TODO : To delete once IS_NULL_EQUIVALENCE_ENABLED feature flag removed
const indexPredicate = uniqueFieldsToUpdate
.map((field) =>
computeUniqueIndexWhereClause({
type: field.type,
name: field.name,
defaultValue: field.defaultValue,
}),
)
.filter(isDefined);
const restrictedFields =
repository.objectRecordsPermissions?.[flatObjectMetadata.id]
?.restrictedFields;
@@ -173,10 +161,6 @@ export class UpsertRecordService {
transformedObjectRecord,
{
conflictPaths: conflictPaths,
indexPredicate:
indexPredicate.length > 0
? `${indexPredicate.join(' AND ')}`
: undefined,
},
undefined,
selectedColumns,
@@ -1,9 +1,8 @@
import { isNonEmptyString } from '@sniptt/guards';
import { isNonEmptyArray, isNonEmptyString } from '@sniptt/guards';
export const transformEmailsValue = (
// eslint-disable-next-line @typescript-eslint/no-explicit-any
value: any,
isNullEquivalenceEnabled: boolean = false,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
): any => {
if (!value) {
@@ -13,9 +12,7 @@ export const transformEmailsValue = (
let additionalEmails: string | null = value?.additionalEmails;
const primaryEmail = value?.primaryEmail
? value.primaryEmail.toLowerCase()
: isNullEquivalenceEnabled
? null
: '';
: null;
if (additionalEmails) {
try {
@@ -25,16 +22,9 @@ export const transformEmailsValue = (
: additionalEmails
) as string[];
additionalEmails = JSON.stringify(
emailArray.map((email) => email.toLowerCase()),
);
if (isNullEquivalenceEnabled) {
additionalEmails =
Array.isArray(emailArray) && emailArray.length === 0
? null
: additionalEmails;
}
additionalEmails = isNonEmptyArray(emailArray)
? JSON.stringify(emailArray.map((email) => email.toLowerCase()))
: null;
} catch {
/* empty */
}