Remove old relations (#11993)
This is a first PR to remove old relation logic Next steps: - remove relationMetadata from cache - remove relationMetadata table content and structure - refactor relationDefinition to leverage field.settings instead
This commit is contained in:
@ -9,7 +9,6 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm';
|
||||
|
||||
import { TypeORMModule } from 'src/database/typeorm/typeorm.module';
|
||||
import { ActorModule } from 'src/engine/core-modules/actor/actor.module';
|
||||
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
||||
import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard';
|
||||
import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module';
|
||||
import { FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto';
|
||||
@ -49,7 +48,6 @@ import { UpdateFieldInput } from './dtos/update-field.input';
|
||||
WorkspaceMigrationRunnerModule,
|
||||
WorkspaceMetadataVersionModule,
|
||||
WorkspaceCacheStorageModule,
|
||||
FeatureFlagModule,
|
||||
ObjectMetadataModule,
|
||||
DataSourceModule,
|
||||
TypeORMModule,
|
||||
|
||||
@ -10,8 +10,6 @@ import {
|
||||
|
||||
import { FieldMetadataType } from 'twenty-shared/types';
|
||||
|
||||
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 {
|
||||
ForbiddenError,
|
||||
ValidationError,
|
||||
@ -53,7 +51,6 @@ import { createDeterministicUuid } from 'src/engine/workspace-manager/workspace-
|
||||
export class FieldMetadataResolver {
|
||||
constructor(
|
||||
private readonly fieldMetadataService: FieldMetadataService,
|
||||
private readonly featureFlagService: FeatureFlagService,
|
||||
private readonly beforeUpdateOneField: BeforeUpdateOneField<UpdateFieldInput>,
|
||||
) {}
|
||||
|
||||
@ -178,51 +175,28 @@ export class FieldMetadataResolver {
|
||||
return null;
|
||||
}
|
||||
|
||||
const isNewRelationEnabled = await this.featureFlagService.isFeatureEnabled(
|
||||
FeatureFlagKey.IsNewRelationEnabled,
|
||||
workspace.id,
|
||||
const relation = await this.relation(
|
||||
workspace,
|
||||
fieldMetadata as FieldMetadataEntity<FieldMetadataType.RELATION>,
|
||||
context,
|
||||
);
|
||||
|
||||
// TODO: Remove this once we drop old relations or update the front-end to use the new relation
|
||||
if (isNewRelationEnabled) {
|
||||
const relation = await this.relation(
|
||||
workspace,
|
||||
fieldMetadata as FieldMetadataEntity<FieldMetadataType.RELATION>,
|
||||
context,
|
||||
);
|
||||
|
||||
if (!relation) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
// Temporary fix as we don't have relationId in the new relation
|
||||
relationId: createDeterministicUuid([
|
||||
relation.sourceFieldMetadata.id,
|
||||
relation.targetFieldMetadata.id,
|
||||
]),
|
||||
direction: relation.type as unknown as RelationDefinitionType,
|
||||
sourceObjectMetadata: relation.sourceObjectMetadata,
|
||||
targetObjectMetadata: relation.targetObjectMetadata,
|
||||
sourceFieldMetadata: relation.sourceFieldMetadata,
|
||||
targetFieldMetadata: relation.targetFieldMetadata,
|
||||
};
|
||||
if (!relation) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
const relationMetadataItem =
|
||||
await context.loaders.relationMetadataLoader.load({
|
||||
fieldMetadata,
|
||||
workspaceId: workspace.id,
|
||||
});
|
||||
|
||||
return await this.fieldMetadataService.getRelationDefinitionFromRelationMetadata(
|
||||
fieldMetadata,
|
||||
relationMetadataItem,
|
||||
);
|
||||
} catch (error) {
|
||||
fieldMetadataGraphqlApiExceptionHandler(error);
|
||||
}
|
||||
return {
|
||||
// Temporary fix as we don't have relationId in the new relation
|
||||
relationId: createDeterministicUuid([
|
||||
relation.sourceFieldMetadata.id,
|
||||
relation.targetFieldMetadata.id,
|
||||
]),
|
||||
direction: relation.type as unknown as RelationDefinitionType,
|
||||
sourceObjectMetadata: relation.sourceObjectMetadata,
|
||||
targetObjectMetadata: relation.targetObjectMetadata,
|
||||
sourceFieldMetadata: relation.sourceFieldMetadata,
|
||||
targetFieldMetadata: relation.targetFieldMetadata,
|
||||
};
|
||||
}
|
||||
|
||||
@ResolveField(() => RelationDTO, { nullable: true })
|
||||
@ -236,18 +210,6 @@ export class FieldMetadataResolver {
|
||||
}
|
||||
|
||||
try {
|
||||
const isNewRelationEnabled =
|
||||
await this.featureFlagService.isFeatureEnabled(
|
||||
FeatureFlagKey.IsNewRelationEnabled,
|
||||
workspace.id,
|
||||
);
|
||||
|
||||
if (!isNewRelationEnabled) {
|
||||
throw new FieldMetadataException(
|
||||
'New relation feature is not enabled for this workspace',
|
||||
FieldMetadataExceptionCode.FIELD_METADATA_RELATION_NOT_ENABLED,
|
||||
);
|
||||
}
|
||||
const {
|
||||
sourceObjectMetadata,
|
||||
targetObjectMetadata,
|
||||
|
||||
Reference in New Issue
Block a user