[BREAKING_CHANGE/GRAPHQL/OBJECT_METADATA_CREATE_ONE] Remove object/fields/view-fields v1 implementation (#15823)

# Introduction
Remove the v2 feature flag for view-field field-metadata and
object-metadata metadata entities

## Some details
- Disabled nestjs-query for object metadata creation and explicitly
calling it
- removed all v1 integration tests files

## Remarks
Not remove v2 referencing in both filenaming right now will handle that
globally later

## Breaking change
Due to object metadata resolver createOne standardization had to rename
the input from `CreateObjectInput` to `CreateOneObjectInput`
This commit is contained in:
Paul Rastoin
2025-11-17 10:55:19 +01:00
committed by GitHub
parent c1dcda6475
commit a39efeb1ab
75 changed files with 425 additions and 15441 deletions
@@ -13,7 +13,6 @@ import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-
import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service';
import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity';
import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity';
@@ -28,13 +27,13 @@ import { WorkspaceSyncMetadataService } from 'src/engine/workspace-manager/works
describe('WorkspaceManagerService', () => {
let service: WorkspaceManagerService;
let objectMetadataServiceV2: ObjectMetadataServiceV2;
let workspaceMigrationRepository: Repository<WorkspaceMigrationEntity>;
let dataSourceRepository: Repository<DataSourceEntity>;
let workspaceDataSourceService: WorkspaceDataSourceService;
let roleTargetsRepository: Repository<RoleTargetsEntity>;
let roleRepository: Repository<RoleEntity>;
let mockDataSource: jest.Mocked<DataSource>;
let objectMetadataServiceV2: ObjectMetadataServiceV2;
beforeEach(async () => {
mockDataSource = {
@@ -102,10 +101,6 @@ describe('WorkspaceManagerService', () => {
provide: FeatureFlagService,
useValue: {},
},
{
provide: ObjectMetadataService,
useValue: {},
},
{
provide: RoleService,
useValue: {},
@@ -154,9 +149,6 @@ describe('WorkspaceManagerService', () => {
}).compile();
service = module.get<WorkspaceManagerService>(WorkspaceManagerService);
objectMetadataServiceV2 = module.get<ObjectMetadataServiceV2>(
ObjectMetadataServiceV2,
);
workspaceMigrationRepository = module.get<
Repository<WorkspaceMigrationEntity>
>(getRepositoryToken(WorkspaceMigrationEntity));
@@ -172,6 +164,9 @@ describe('WorkspaceManagerService', () => {
roleRepository = module.get<Repository<RoleEntity>>(
getRepositoryToken(RoleEntity),
);
objectMetadataServiceV2 = module.get<ObjectMetadataServiceV2>(
ObjectMetadataServiceV2,
);
});
it('should be defined', () => {
@@ -8,8 +8,8 @@ import { DataSource } from 'typeorm';
import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum';
import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { type WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager';
import { computeTableName } from 'src/engine/utils/compute-table-name.util';
import {
@@ -265,7 +265,7 @@ export class DevSeederDataService {
constructor(
@InjectDataSource()
private readonly coreDataSource: DataSource,
private readonly objectMetadataService: ObjectMetadataService,
private readonly objectMetadataService: ObjectMetadataServiceV2,
private readonly timelineActivitySeederService: TimelineActivitySeederService,
private readonly fileStorageService: FileStorageService,
) {}
@@ -3,7 +3,7 @@ import { Injectable } from '@nestjs/common';
import chunk from 'lodash.chunk';
import { ObjectRecord } from 'twenty-shared/types';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { type WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager';
import { CALENDAR_EVENT_DATA_SEEDS } from 'src/engine/workspace-manager/dev-seeder/data/constants/calendar-event-data-seeds.constant';
import {
@@ -107,7 +107,9 @@ export class TimelineActivitySeederService {
'message',
]);
constructor(private readonly objectMetadataService: ObjectMetadataService) {}
constructor(
private readonly objectMetadataService: ObjectMetadataServiceV2,
) {}
private getLinkedActivityName(activityType: string): string {
// Notes and tasks use the legacy format: linked-{type}.created
@@ -8,7 +8,6 @@ import { type DataSourceEntity } from 'src/engine/metadata-modules/data-source/d
import { CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataServiceV2 } from 'src/engine/metadata-modules/field-metadata/services/field-metadata.service-v2';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps';
import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service';
import {
@@ -30,7 +29,6 @@ import { prefillCoreViews } from 'src/engine/workspace-manager/standard-objects-
@Injectable()
export class DevSeederMetadataService {
constructor(
private readonly objectMetadataService: ObjectMetadataService,
private readonly objectMetadataServiceV2: ObjectMetadataServiceV2,
private readonly fieldMetadataServiceV2: FieldMetadataServiceV2,
private readonly workspaceMetadataCacheService: WorkspaceMetadataCacheService,
@@ -140,7 +138,7 @@ export class DevSeederMetadataService {
workspaceId: string;
objectMetadataSeed: ObjectMetadataSeed;
}): Promise<void> {
await this.objectMetadataServiceV2.createOne({
await this.objectMetadataServiceV2.createOneObject({
createObjectInput: {
...objectMetadataSeed,
dataSourceId,
@@ -159,7 +157,7 @@ export class DevSeederMetadataService {
fieldMetadataSeeds: FieldMetadataSeed[];
}): Promise<void> {
const objectMetadata =
await this.objectMetadataService.findOneWithinWorkspace(workspaceId, {
await this.objectMetadataServiceV2.findOneWithinWorkspace(workspaceId, {
where: { nameSingular: objectMetadataNameSingular },
});
@@ -173,7 +171,7 @@ export class DevSeederMetadataService {
objectMetadataId: objectMetadata.id,
}));
await this.fieldMetadataServiceV2.createMany({
await this.fieldMetadataServiceV2.createManyFields({
createFieldInputs,
workspaceId,
});
@@ -189,7 +187,7 @@ export class DevSeederMetadataService {
featureFlags?: Record<string, boolean>;
}): Promise<void> {
const createdObjectMetadata =
await this.objectMetadataService.findManyWithinWorkspace(workspaceId);
await this.objectMetadataServiceV2.findManyWithinWorkspace(workspaceId);
await prefillCoreViews({
coreDataSource: this.coreDataSource,
@@ -243,7 +241,7 @@ export class DevSeederMetadataService {
objectMetadataMaps,
});
await this.fieldMetadataServiceV2.createMany({
await this.fieldMetadataServiceV2.createManyFields({
createFieldInputs,
workspaceId,
});
@@ -11,7 +11,7 @@ import {
} from 'src/engine/workspace-manager/workspace-health/interfaces/workspace-health-options.interface';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util';
import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util';
@@ -29,7 +29,7 @@ export class WorkspaceHealthService {
@InjectDataSource()
private readonly coreDataSource: DataSource,
private readonly dataSourceService: DataSourceService,
private readonly objectMetadataService: ObjectMetadataService,
private readonly objectMetadataService: ObjectMetadataServiceV2,
private readonly databaseStructureService: DatabaseStructureService,
private readonly objectMetadataHealthService: ObjectMetadataHealthService,
private readonly fieldMetadataHealthService: FieldMetadataHealthService,
@@ -10,7 +10,6 @@ import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.ent
import { type DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
import { ObjectMetadataServiceV2 } from 'src/engine/metadata-modules/object-metadata/object-metadata-v2.service';
import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service';
import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity';
import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity';
import { RoleService } from 'src/engine/metadata-modules/role/role.service';
@@ -32,7 +31,6 @@ export class WorkspaceManagerService {
private readonly coreDataSource: DataSource,
private readonly workspaceDataSourceService: WorkspaceDataSourceService,
private readonly workspaceMigrationService: WorkspaceMigrationService,
private readonly objectMetadataService: ObjectMetadataService,
private readonly objectMetadataServiceV2: ObjectMetadataServiceV2,
private readonly dataSourceService: DataSourceService,
private readonly workspaceSyncMetadataService: WorkspaceSyncMetadataService,
@@ -121,7 +119,7 @@ export class WorkspaceManagerService {
featureFlags: Record<string, boolean>,
) {
const createdObjectMetadata =
await this.objectMetadataService.findManyWithinWorkspace(workspaceId);
await this.objectMetadataServiceV2.findManyWithinWorkspace(workspaceId);
await standardObjectsPrefillData(
this.coreDataSource,