feat: sync command missing ability to rename standard object (#4819)

We've introduced in PR #4373 standard ids to be able to rename standard
fields and objects.
Fields part was working properly, but objects part was not yet
implemented.
This PR is adding the missing parts to make it work.
This commit is contained in:
Jérémy M
2024-04-09 10:20:34 +02:00
committed by GitHub
parent b1242bb850
commit 35717fce8b
16 changed files with 322 additions and 148 deletions

View File

@ -18,6 +18,7 @@ import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationColumnDrop,
WorkspaceMigrationTableAction,
WorkspaceMigrationTableActionType,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service';
@ -152,7 +153,7 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
[
{
name: computeObjectTargetTable(objectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: this.workspaceMigrationFactory.createColumnActions(
WorkspaceMigrationColumnActionType.CREATE,
createdFieldMetadata,
@ -328,7 +329,7 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
[
{
name: computeObjectTargetTable(objectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: this.workspaceMigrationFactory.createColumnActions(
WorkspaceMigrationColumnActionType.ALTER,
existingFieldMetadata,
@ -399,7 +400,7 @@ export class FieldMetadataService extends TypeOrmQueryService<FieldMetadataEntit
[
{
name: computeObjectTargetTable(objectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.DROP,

View File

@ -16,6 +16,7 @@ import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/wo
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationColumnDrop,
WorkspaceMigrationTableActionType,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import {
FieldMetadataEntity,
@ -177,7 +178,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
relationToDelete.toObjectName,
relationToDelete.toObjectMetadataIsCustom,
),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.DROP,
@ -203,7 +204,7 @@ export class ObjectMetadataService extends TypeOrmQueryService<ObjectMetadataEnt
[
{
name: computeObjectTargetTable(objectMetadata),
action: 'drop',
action: WorkspaceMigrationTableActionType.DROP,
},
],
);

View File

@ -5,6 +5,7 @@ import {
WorkspaceMigrationTableAction,
WorkspaceMigrationColumnActionType,
WorkspaceMigrationColumnCreate,
WorkspaceMigrationTableActionType,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util';
@ -17,12 +18,12 @@ export const buildWorkspaceMigrationsForCustomObject = (
): WorkspaceMigrationTableAction[] => [
{
name: computeObjectTargetTable(createdObjectMetadata),
action: 'create',
action: WorkspaceMigrationTableActionType.CREATE,
} satisfies WorkspaceMigrationTableAction,
// Add activity target relation
{
name: computeObjectTargetTable(activityTargetObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -36,7 +37,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
},
{
name: computeObjectTargetTable(activityTargetObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
@ -52,7 +53,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
// Add attachment relation
{
name: computeObjectTargetTable(attachmentObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -66,7 +67,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
},
{
name: computeObjectTargetTable(attachmentObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
@ -82,7 +83,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
// Add event relation
{
name: computeObjectTargetTable(eventObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -96,7 +97,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
},
{
name: computeObjectTargetTable(eventObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
@ -112,7 +113,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
// Add favorite relation
{
name: computeObjectTargetTable(favoriteObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -126,7 +127,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
},
{
name: computeObjectTargetTable(favoriteObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,
@ -141,7 +142,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
},
{
name: computeObjectTargetTable(createdObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -154,7 +155,7 @@ export const buildWorkspaceMigrationsForCustomObject = (
// This is temporary until we implement mainIdentifier
{
name: computeObjectTargetTable(createdObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,

View File

@ -6,6 +6,7 @@ import {
WorkspaceMigrationTableAction,
WorkspaceMigrationColumnActionType,
WorkspaceMigrationColumnCreate,
WorkspaceMigrationTableActionType,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util';
@ -61,7 +62,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
return [
{
name: computeObjectTargetTable(activityTargetObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -75,7 +76,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(activityTargetObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -88,7 +89,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(activityTargetObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_COMMENT,
@ -104,7 +105,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
// Add attachment relation
{
name: computeObjectTargetTable(attachmentObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -118,7 +119,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(attachmentObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -131,7 +132,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(attachmentObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_COMMENT,
@ -147,7 +148,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
// Add event relation
{
name: computeObjectTargetTable(eventObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -161,7 +162,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(eventObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -174,7 +175,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(eventObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_COMMENT,
@ -190,7 +191,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
// Add favorite relation
{
name: computeObjectTargetTable(favoriteObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -204,7 +205,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(favoriteObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -217,7 +218,7 @@ export const buildWorkspaceMigrationsForRemoteObject = async (
},
{
name: computeObjectTargetTable(favoriteObjectMetadata),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_COMMENT,

View File

@ -17,7 +17,10 @@ import { CreateRelationInput } from 'src/engine/metadata-modules/relation-metada
import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service';
import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service';
import { FieldMetadataType } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity';
import { WorkspaceMigrationColumnActionType } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import {
WorkspaceMigrationColumnActionType,
WorkspaceMigrationTableActionType,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util';
import { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util';
@ -171,7 +174,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
name: computeObjectTargetTable(
objectMetadataMap[relationMetadataInput.toObjectMetadataId],
),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE,
@ -186,7 +189,7 @@ export class RelationMetadataService extends TypeOrmQueryService<RelationMetadat
name: computeObjectTargetTable(
objectMetadataMap[relationMetadataInput.toObjectMetadataId],
),
action: 'alter',
action: WorkspaceMigrationTableActionType.ALTER,
columns: [
{
action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY,

View File

@ -30,6 +30,7 @@ import { generateMigrationName } from 'src/engine/metadata-modules/workspace-mig
import {
WorkspaceMigrationColumnDefinition,
WorkspaceMigrationForeignTable,
WorkspaceMigrationTableActionType,
} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity';
import { RemoteTableColumn } from 'src/engine/metadata-modules/remote-server/remote-table/types/remote-table-column';
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
@ -165,7 +166,7 @@ export class RemoteTableService {
[
{
name: remoteTableName,
action: 'create_foreign_table',
action: WorkspaceMigrationTableActionType.CREATE_FOREIGN_TABLE,
foreignTable: {
columns: remoteTableColumns.map(
(column) =>
@ -252,7 +253,7 @@ export class RemoteTableService {
[
{
name: remoteTableName,
action: 'drop_foreign_table',
action: WorkspaceMigrationTableActionType.DROP_FOREIGN_TABLE,
},
],
);

View File

@ -80,14 +80,21 @@ export type WorkspaceMigrationColumnAction = {
| WorkspaceMigrationCreateComment
);
/**
* Enum values are lowercase to avoid issues with already existing enum values
*/
export enum WorkspaceMigrationTableActionType {
CREATE = 'create',
ALTER = 'alter',
DROP = 'drop',
CREATE_FOREIGN_TABLE = 'create_foreign_table',
DROP_FOREIGN_TABLE = 'drop_foreign_table'
}
export type WorkspaceMigrationTableAction = {
name: string;
action:
| 'create'
| 'alter'
| 'drop'
| 'create_foreign_table'
| 'drop_foreign_table';
newName?: string;
action: WorkspaceMigrationTableActionType;
columns?: WorkspaceMigrationColumnAction[];
foreignTable?: WorkspaceMigrationForeignTable;
};