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:
Charles Bochet
2025-05-13 11:28:22 +02:00
committed by GitHub
parent 9ed6edc005
commit 45d4845b26
63 changed files with 223 additions and 2016 deletions

View File

@ -11,7 +11,6 @@ export class RestApiGetManyHandler extends RestApiBaseHandler {
objectMetadataNameSingular,
objectMetadataNamePlural,
repository,
dataSource,
objectMetadata,
objectMetadataItemWithFieldsMaps,
} = await this.getRepositoryAndMetadataOrFail(request);
@ -20,7 +19,6 @@ export class RestApiGetManyHandler extends RestApiBaseHandler {
await this.findRecords({
request,
repository,
dataSource,
objectMetadata,
objectMetadataNameSingular,
objectMetadataItemWithFieldsMaps,

View File

@ -21,7 +21,6 @@ export class RestApiGetOneHandler extends RestApiBaseHandler {
const {
objectMetadataNameSingular,
repository,
dataSource,
objectMetadata,
objectMetadataItemWithFieldsMaps,
} = await this.getRepositoryAndMetadataOrFail(request);
@ -30,7 +29,6 @@ export class RestApiGetOneHandler extends RestApiBaseHandler {
request,
recordId,
repository,
dataSource,
objectMetadata,
objectMetadataNameSingular,
objectMetadataItemWithFieldsMaps,

View File

@ -1,37 +1,35 @@
import { BadRequestException, Inject } from '@nestjs/common';
import { Request } from 'express';
import { FieldMetadataType } from 'twenty-shared/types';
import { capitalize, isDefined } from 'twenty-shared/utils';
import { In, ObjectLiteral, SelectQueryBuilder } from 'typeorm';
import { FieldMetadataType } from 'twenty-shared/types';
import {
ObjectRecord,
OrderByDirection,
} from 'src/engine/api/graphql/workspace-query-builder/interfaces/object-record.interface';
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
import { ApiEventEmitterService } from 'src/engine/api/graphql/graphql-query-runner/services/api-event-emitter.service';
import { CoreQueryBuilderFactory } from 'src/engine/api/rest/core/query-builder/core-query-builder.factory';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { GetVariablesFactory } from 'src/engine/api/rest/core/query-builder/factories/get-variables.factory';
import { parseCorePath } from 'src/engine/api/rest/core/query-builder/utils/path-parsers/parse-core-path.utils';
import { QueryVariables } from 'src/engine/api/rest/core/types/query-variables.type';
import {
Depth,
DepthInputFactory,
MAX_DEPTH,
} from 'src/engine/api/rest/input-factories/depth-input.factory';
import { ApiEventEmitterService } from 'src/engine/api/graphql/graphql-query-runner/services/api-event-emitter.service';
import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
import { parseCorePath } from 'src/engine/api/rest/core/query-builder/utils/path-parsers/parse-core-path.utils';
import { getObjectMetadataMapItemByNameSingular } from 'src/engine/metadata-modules/utils/get-object-metadata-map-item-by-name-singular.util';
import { RecordInputTransformerService } from 'src/engine/core-modules/record-transformer/services/record-input-transformer.service';
import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps';
import { WorkspaceDataSource } from 'src/engine/twenty-orm/datasource/workspace.datasource';
import { GraphqlQueryParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query.parser';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
import { getObjectMetadataMapItemByNameSingular } from 'src/engine/metadata-modules/utils/get-object-metadata-map-item-by-name-singular.util';
import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service';
import { WorkspaceRepository } from 'src/engine/twenty-orm/repository/workspace.repository';
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { formatResult as formatGetManyData } from 'src/engine/twenty-orm/utils/format-result.util';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { QueryVariables } from 'src/engine/api/rest/core/types/query-variables.type';
export interface PageInfo {
hasNextPage?: boolean;
@ -284,7 +282,6 @@ export abstract class RestApiBaseHandler {
request,
recordId,
repository,
dataSource,
objectMetadata,
objectMetadataNameSingular,
objectMetadataItemWithFieldsMaps,
@ -292,7 +289,6 @@ export abstract class RestApiBaseHandler {
request: Request;
recordId?: string;
repository: WorkspaceRepository<ObjectLiteral>;
dataSource: WorkspaceDataSource;
objectMetadata: any;
objectMetadataNameSingular: string;
objectMetadataItemWithFieldsMaps:
@ -316,7 +312,6 @@ export abstract class RestApiBaseHandler {
fieldMetadataMapByName,
fieldMetadataMapByJoinColumnName,
objectMetadata.objectMetadataMaps,
dataSource.featureFlagMap,
);
const filters = this.computeFilters(inputs);
@ -366,7 +361,6 @@ export abstract class RestApiBaseHandler {
records,
objectMetadataItemWithFieldsMaps as any,
objectMetadata.objectMetadataMaps,
dataSource.featureFlagMap[FeatureFlagKey.IsNewRelationEnabled],
),
totalCount,
hasMoreRecords,