removing feature flag IS_MORPH_RELATION_ENABLED (#15783)

releasing the morph feature for all workspaces
This commit is contained in:
Guillim
2025-11-13 12:03:25 +01:00
committed by GitHub
parent cb759aa22e
commit 0389fcf00d
9 changed files with 13 additions and 99 deletions
@@ -39,15 +39,6 @@ export const PUBLIC_FEATURE_FLAGS: PublicFeatureFlag[] = [
imagePath: 'https://twenty.com/images/lab/is-dashboards-enabled.png',
},
},
{
key: FeatureFlagKey.IS_MORPH_RELATION_ENABLED,
metadata: {
label: 'Morph Relations',
description:
'Create polymorphic relationships that can link to multiple object types',
imagePath: 'https://twenty.com/images/lab/is-morph-relation-enabled.png',
},
},
...(process.env.CLOUDFLARE_API_KEY
? [
// {
@@ -7,7 +7,6 @@ export enum FeatureFlagKey {
IS_AI_ENABLED = 'IS_AI_ENABLED',
IS_APPLICATION_ENABLED = 'IS_APPLICATION_ENABLED',
IS_IMAP_SMTP_CALDAV_ENABLED = 'IS_IMAP_SMTP_CALDAV_ENABLED',
IS_MORPH_RELATION_ENABLED = 'IS_MORPH_RELATION_ENABLED',
IS_WORKSPACE_MIGRATION_V2_ENABLED = 'IS_WORKSPACE_MIGRATION_V2_ENABLED',
IS_PAGE_LAYOUT_ENABLED = 'IS_PAGE_LAYOUT_ENABLED',
IS_RECORD_PAGE_LAYOUT_ENABLED = 'IS_RECORD_PAGE_LAYOUT_ENABLED',
@@ -652,24 +652,6 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
{ workspaceId: fieldMetadataInputs[0].workspaceId },
);
const isMorphRelationEnabled =
await this.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IS_MORPH_RELATION_ENABLED,
workspaceId,
);
const isSomeFieldMetadatInputsMorph = fieldMetadataInputs.some(
(fieldMetadataInput) =>
fieldMetadataInput.type === FieldMetadataType.MORPH_RELATION,
);
if (isSomeFieldMetadatInputsMorph && !isMorphRelationEnabled) {
throw new FieldMetadataException(
'Morph Relation feature is not enabled for this workspace',
FieldMetadataExceptionCode.INTERNAL_SERVER_ERROR,
);
}
const queryRunner = this.coreDataSource.createQueryRunner();
await queryRunner.connect();
@@ -3,7 +3,6 @@ import { Injectable } from '@nestjs/common';
import { msg } from '@lingui/core/macro';
import { isDefined } from 'class-validator';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
import { type FlatFieldMetadataTypeValidator } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-type-validator.type';
@@ -44,22 +43,6 @@ export class FlatFieldMetadataTypeValidatorService {
UUID: DEFAULT_NO_VALIDATION,
MORPH_RELATION: async (args) => {
const isMorphRelationEnabled =
await this.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IS_MORPH_RELATION_ENABLED,
args.workspaceId,
);
if (!isMorphRelationEnabled) {
return [
{
code: FieldMetadataExceptionCode.UNCOVERED_FIELD_METADATA_TYPE_VALIDATION,
message: 'Morph relation feature flag is disabled',
userFriendlyMessage: msg`Morph relation fields are disabled for your workspace`,
},
];
}
return validateMorphOrRelationFlatFieldMetadata(args);
},
MULTI_SELECT: validateEnumSelectFlatFieldMetadata,
@@ -158,7 +158,6 @@ describe('WorkspaceEntityManager', () => {
IS_AI_ENABLED: false,
IS_APPLICATION_ENABLED: false,
IS_IMAP_SMTP_CALDAV_ENABLED: false,
IS_MORPH_RELATION_ENABLED: false,
IS_WORKSPACE_MIGRATION_V2_ENABLED: false,
IS_PAGE_LAYOUT_ENABLED: false,
IS_RECORD_PAGE_LAYOUT_ENABLED: false,
@@ -57,11 +57,6 @@ export const seedFeatureFlags = async ({
workspaceId: workspaceId,
value: true,
},
{
key: FeatureFlagKey.IS_MORPH_RELATION_ENABLED,
workspaceId: workspaceId,
value: true,
},
{
key: FeatureFlagKey.IS_WORKSPACE_MIGRATION_V2_ENABLED,
workspaceId: workspaceId,