Add custom routes to migration v2 (#14846)
## Context Add routes to migration V2 - Resolvers - Service v2 - Builder - Validator - Action runner Next PR: Add to twenty-cli to sync routes with serverless
This commit is contained in:
+1
@@ -18,4 +18,5 @@ export const EMPTY_ORCHESTRATOR_ACTIONS_REPORT = {
|
||||
serverlessFunction: emptyCreatedDeletedUpdated,
|
||||
databaseEventTrigger: emptyCreatedDeletedUpdated,
|
||||
cronTrigger: emptyCreatedDeletedUpdated,
|
||||
routeTrigger: emptyCreatedDeletedUpdated,
|
||||
} as const satisfies OrchestratorActionsReport;
|
||||
|
||||
+2
@@ -13,6 +13,7 @@ export const fromWorkspaceMigrationBuilderExceptionToValidationResponseError = (
|
||||
invalidServerlessFunction: 0,
|
||||
invalidDatabaseEventTrigger: 0,
|
||||
invalidCronTrigger: 0,
|
||||
invalidRouteTrigger: 0,
|
||||
invalidFieldMetadata: 0,
|
||||
totalErrors: 0,
|
||||
},
|
||||
@@ -25,6 +26,7 @@ export const fromWorkspaceMigrationBuilderExceptionToValidationResponseError = (
|
||||
serverlessFunction: [],
|
||||
databaseEventTrigger: [],
|
||||
cronTrigger: [],
|
||||
routeTrigger: [],
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
+48
-2
@@ -17,6 +17,7 @@ import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 's
|
||||
import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/services/workspace-migration-v2-field-actions-builder.service';
|
||||
import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/services/workspace-migration-v2-object-actions-builder.service';
|
||||
import { WorkspaceMigrationV2RouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ServerlessFunctionActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ViewFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ViewActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service';
|
||||
@@ -30,6 +31,7 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
private readonly workspaceMigrationV2ServerlessFunctionActionsBuilderService: WorkspaceMigrationV2ServerlessFunctionActionsBuilderService,
|
||||
private readonly workspaceMigrationV2DatabaseEventTriggerActionsBuilderService: WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService,
|
||||
private readonly workspaceMigrationV2CronTriggerActionsBuilderService: WorkspaceMigrationV2CronTriggerActionsBuilderService,
|
||||
private readonly workspaceMigrationV2RouteTriggerActionsBuilderService: WorkspaceMigrationV2RouteTriggerActionsBuilderService,
|
||||
private readonly workspaceMigrationV2FieldActionsBuilderService: WorkspaceMigrationV2FieldActionsBuilderService,
|
||||
) {}
|
||||
|
||||
@@ -84,6 +86,7 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
serverlessFunction: [],
|
||||
databaseEventTrigger: [],
|
||||
cronTrigger: [],
|
||||
routeTrigger: [],
|
||||
fieldMetadata: [],
|
||||
};
|
||||
|
||||
@@ -99,6 +102,7 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
flatServerlessFunctionMaps,
|
||||
flatDatabaseEventTriggerMaps,
|
||||
flatCronTriggerMaps,
|
||||
flatRouteTriggerMaps,
|
||||
flatFieldMetadataMaps,
|
||||
} = fromToAllFlatEntityMaps;
|
||||
|
||||
@@ -289,8 +293,11 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
from: fromFlatDatabaseEventTriggerMaps,
|
||||
to: toFlatDatabaseEventTriggerMaps,
|
||||
buildOptions,
|
||||
dependencyOptimisticFlatEntityMaps: {
|
||||
flatServerlessFunctionMaps:
|
||||
optimisticAllFlatEntityMaps.flatServerlessFunctionMaps,
|
||||
},
|
||||
workspaceId,
|
||||
dependencyOptimisticFlatEntityMaps: undefined,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -317,8 +324,11 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
from: fromFlatCronTriggerMaps,
|
||||
to: toFlatCronTriggerMaps,
|
||||
buildOptions,
|
||||
dependencyOptimisticFlatEntityMaps: {
|
||||
flatServerlessFunctionMaps:
|
||||
optimisticAllFlatEntityMaps.flatServerlessFunctionMaps,
|
||||
},
|
||||
workspaceId,
|
||||
dependencyOptimisticFlatEntityMaps: undefined,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -332,6 +342,36 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
}
|
||||
}
|
||||
|
||||
if (isDefined(flatRouteTriggerMaps)) {
|
||||
const { from: fromFlatRouteTriggerMaps, to: toFlatRouteTriggerMaps } =
|
||||
flatRouteTriggerMaps;
|
||||
|
||||
const routeTriggerResult =
|
||||
await this.workspaceMigrationV2RouteTriggerActionsBuilderService.validateAndBuild(
|
||||
{
|
||||
from: fromFlatRouteTriggerMaps,
|
||||
to: toFlatRouteTriggerMaps,
|
||||
buildOptions,
|
||||
dependencyOptimisticFlatEntityMaps: {
|
||||
flatServerlessFunctionMaps:
|
||||
optimisticAllFlatEntityMaps.flatServerlessFunctionMaps,
|
||||
},
|
||||
workspaceId,
|
||||
},
|
||||
);
|
||||
|
||||
optimisticAllFlatEntityMaps.flatRouteTriggerMaps =
|
||||
routeTriggerResult.optimisticFlatEntityMaps;
|
||||
|
||||
if (routeTriggerResult.status === 'fail') {
|
||||
orchestratorFailureReport.routeTrigger.push(
|
||||
...routeTriggerResult.errors,
|
||||
);
|
||||
} else {
|
||||
orchestratorActionsReport.routeTrigger = routeTriggerResult.actions;
|
||||
}
|
||||
}
|
||||
|
||||
const allErrors = Object.values(orchestratorFailureReport);
|
||||
|
||||
if (allErrors.some((report) => report.length > 0)) {
|
||||
@@ -396,6 +436,12 @@ export class WorkspaceMigrationBuildOrchestratorService {
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.created,
|
||||
...aggregatedOrchestratorActionsReport.cronTrigger.updated,
|
||||
///
|
||||
|
||||
// Route triggers
|
||||
...orchestratorActionsReport.routeTrigger.deleted,
|
||||
...orchestratorActionsReport.routeTrigger.created,
|
||||
...orchestratorActionsReport.routeTrigger.updated,
|
||||
///
|
||||
],
|
||||
workspaceId,
|
||||
},
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
|
||||
|
||||
export type CronTriggerRelatedFlatEntityMaps = Pick<
|
||||
AllFlatEntityMaps,
|
||||
'flatServerlessFunctionMaps'
|
||||
>;
|
||||
+23
-7
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
|
||||
import { compareTwoFlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/utils/compare-two-flat-cron-trigger.util';
|
||||
import { CronTriggerRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/cron-trigger-related-flat-entity-maps.type';
|
||||
import {
|
||||
FlatEntityUpdateValidationArgs,
|
||||
FlatEntityValidationArgs,
|
||||
@@ -19,7 +20,7 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
'cronTrigger',
|
||||
FlatCronTrigger,
|
||||
WorkspaceMigrationCronTriggerActionV2,
|
||||
undefined
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
> {
|
||||
constructor(
|
||||
private readonly flatCronTriggerValidatorService: FlatCronTriggerValidatorService,
|
||||
@@ -31,10 +32,14 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
flatEntityToValidate: flatCronTriggerToValidate,
|
||||
optimisticFlatEntityMaps: optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<FlatCronTrigger>): Promise<
|
||||
}: FlatEntityValidationArgs<
|
||||
FlatCronTrigger,
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationCronTriggerActionV2,
|
||||
FlatCronTrigger
|
||||
FlatCronTrigger,
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
@@ -42,6 +47,7 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
{
|
||||
flatCronTriggerToValidate,
|
||||
optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -66,16 +72,21 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
flatEntityToValidate: flatCronTriggerToValidate,
|
||||
optimisticFlatEntityMaps: optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<FlatCronTrigger>): Promise<
|
||||
}: FlatEntityValidationArgs<
|
||||
FlatCronTrigger,
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationCronTriggerActionV2,
|
||||
FlatCronTrigger
|
||||
FlatCronTrigger,
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatCronTriggerValidatorService.validateFlatCronTriggerDeletion({
|
||||
flatCronTriggerToValidate,
|
||||
optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
});
|
||||
|
||||
if (validationResult.errors.length > 0) {
|
||||
@@ -99,10 +110,14 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
flatEntityUpdate: { from: fromFlatCronTrigger, to: toFlatCronTrigger },
|
||||
optimisticFlatEntityMaps: optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityUpdateValidationArgs<FlatCronTrigger>): Promise<
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
FlatCronTrigger,
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
| FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationCronTriggerActionV2,
|
||||
FlatCronTrigger
|
||||
FlatCronTrigger,
|
||||
CronTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
| undefined
|
||||
> {
|
||||
@@ -119,6 +134,7 @@ export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends Worksp
|
||||
this.flatCronTriggerValidatorService.validateFlatCronTriggerUpdate({
|
||||
flatCronTriggerToValidate: toFlatCronTrigger,
|
||||
optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
});
|
||||
|
||||
if (validationResult.errors.length > 0) {
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
|
||||
|
||||
export type DatabaseEventTriggerRelatedFlatEntityMaps = Pick<
|
||||
AllFlatEntityMaps,
|
||||
'flatServerlessFunctionMaps'
|
||||
>;
|
||||
+23
-7
@@ -2,6 +2,7 @@ import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type';
|
||||
import { compareTwoFlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/utils/compare-two-flat-database-event-trigger.util';
|
||||
import { DatabaseEventTriggerRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/database-event-trigger-related-flat-entity-maps.type';
|
||||
import {
|
||||
FlatEntityUpdateValidationArgs,
|
||||
FlatEntityValidationArgs,
|
||||
@@ -19,7 +20,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
'databaseEventTrigger',
|
||||
FlatDatabaseEventTrigger,
|
||||
WorkspaceMigrationDatabaseEventTriggerActionV2,
|
||||
undefined
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
> {
|
||||
constructor(
|
||||
private readonly flatDatabaseEventTriggerValidatorService: FlatDatabaseEventTriggerValidatorService,
|
||||
@@ -31,10 +32,14 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
flatEntityToValidate: flatDatabaseEventTriggerToValidate,
|
||||
optimisticFlatEntityMaps: optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<FlatDatabaseEventTrigger>): Promise<
|
||||
}: FlatEntityValidationArgs<
|
||||
FlatDatabaseEventTrigger,
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationDatabaseEventTriggerActionV2,
|
||||
FlatDatabaseEventTrigger
|
||||
FlatDatabaseEventTrigger,
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
@@ -42,6 +47,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
{
|
||||
flatDatabaseEventTriggerToValidate,
|
||||
optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -66,10 +72,14 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
flatEntityToValidate: flatDatabaseEventTriggerToValidate,
|
||||
optimisticFlatEntityMaps: optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<FlatDatabaseEventTrigger>): Promise<
|
||||
}: FlatEntityValidationArgs<
|
||||
FlatDatabaseEventTrigger,
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationDatabaseEventTriggerActionV2,
|
||||
FlatDatabaseEventTrigger
|
||||
FlatDatabaseEventTrigger,
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
@@ -77,6 +87,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
{
|
||||
flatDatabaseEventTriggerToValidate,
|
||||
optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -104,10 +115,14 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
},
|
||||
optimisticFlatEntityMaps: optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityUpdateValidationArgs<FlatDatabaseEventTrigger>): Promise<
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
FlatDatabaseEventTrigger,
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
| FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationDatabaseEventTriggerActionV2,
|
||||
FlatDatabaseEventTrigger
|
||||
FlatDatabaseEventTrigger,
|
||||
DatabaseEventTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
| undefined
|
||||
> {
|
||||
@@ -126,6 +141,7 @@ export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService exten
|
||||
{
|
||||
flatDatabaseEventTriggerToValidate: toFlatDatabaseEventTrigger,
|
||||
optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type';
|
||||
|
||||
export type RouteTriggerRelatedFlatEntityMaps = Pick<
|
||||
AllFlatEntityMaps,
|
||||
'flatServerlessFunctionMaps'
|
||||
>;
|
||||
+159
@@ -0,0 +1,159 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type';
|
||||
import { compareTwoFlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/utils/compare-two-flat-route-trigger.util';
|
||||
import { RouteTriggerRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/route-trigger-related-flat-entity-maps.type';
|
||||
import {
|
||||
FlatEntityUpdateValidationArgs,
|
||||
FlatEntityValidationArgs,
|
||||
FlatEntityValidationReturnType,
|
||||
WorkspaceEntityMigrationBuilderV2Service,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service';
|
||||
import {
|
||||
UpdateRouteTriggerAction,
|
||||
WorkspaceMigrationRouteTriggerActionV2,
|
||||
} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-route-trigger-action-v2.type';
|
||||
import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service';
|
||||
|
||||
@Injectable()
|
||||
export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service<
|
||||
'routeTrigger',
|
||||
FlatRouteTrigger,
|
||||
WorkspaceMigrationRouteTriggerActionV2,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
> {
|
||||
constructor(
|
||||
private readonly flatRouteTriggerValidatorService: FlatRouteTriggerValidatorService,
|
||||
) {
|
||||
super('routeTrigger');
|
||||
}
|
||||
|
||||
protected async validateFlatEntityCreation({
|
||||
flatEntityToValidate: flatRouteTriggerToValidate,
|
||||
optimisticFlatEntityMaps: optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<
|
||||
FlatRouteTrigger,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationRouteTriggerActionV2,
|
||||
FlatRouteTrigger,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
await this.flatRouteTriggerValidatorService.validateFlatRouteTriggerCreation(
|
||||
{
|
||||
flatRouteTriggerToValidate,
|
||||
optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
},
|
||||
);
|
||||
|
||||
if (validationResult.errors.length > 0) {
|
||||
return {
|
||||
status: 'fail',
|
||||
...validationResult,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'create_route_trigger',
|
||||
routeTrigger: flatRouteTriggerToValidate,
|
||||
},
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
};
|
||||
}
|
||||
|
||||
protected async validateFlatEntityDeletion({
|
||||
flatEntityToValidate: flatRouteTriggerToValidate,
|
||||
optimisticFlatEntityMaps: optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityValidationArgs<
|
||||
FlatRouteTrigger,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationRouteTriggerActionV2,
|
||||
FlatRouteTrigger,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
> {
|
||||
const validationResult =
|
||||
this.flatRouteTriggerValidatorService.validateFlatRouteTriggerDeletion({
|
||||
flatRouteTriggerToValidate,
|
||||
optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
});
|
||||
|
||||
if (validationResult.errors.length > 0) {
|
||||
return {
|
||||
status: 'fail',
|
||||
...validationResult,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
status: 'success',
|
||||
action: {
|
||||
type: 'delete_route_trigger',
|
||||
routeTriggerId: flatRouteTriggerToValidate.id,
|
||||
},
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
};
|
||||
}
|
||||
|
||||
protected async validateFlatEntityUpdate({
|
||||
flatEntityUpdate: { from: fromFlatRouteTrigger, to: toFlatRouteTrigger },
|
||||
optimisticFlatEntityMaps: optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: FlatEntityUpdateValidationArgs<
|
||||
FlatRouteTrigger,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
>): Promise<
|
||||
| FlatEntityValidationReturnType<
|
||||
WorkspaceMigrationRouteTriggerActionV2,
|
||||
FlatRouteTrigger,
|
||||
RouteTriggerRelatedFlatEntityMaps
|
||||
>
|
||||
| undefined
|
||||
> {
|
||||
const routeTriggerUpdatedProperties = compareTwoFlatRouteTrigger({
|
||||
fromFlatRouteTrigger,
|
||||
toFlatRouteTrigger,
|
||||
});
|
||||
|
||||
if (routeTriggerUpdatedProperties.length === 0) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const validationResult =
|
||||
this.flatRouteTriggerValidatorService.validateFlatRouteTriggerUpdate({
|
||||
flatRouteTriggerToValidate: toFlatRouteTrigger,
|
||||
optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
});
|
||||
|
||||
if (validationResult.errors.length > 0) {
|
||||
return {
|
||||
status: 'fail',
|
||||
...validationResult,
|
||||
};
|
||||
}
|
||||
|
||||
const updateRouteTriggerAction: UpdateRouteTriggerAction = {
|
||||
type: 'update_route_trigger',
|
||||
routeTriggerId: toFlatRouteTrigger.id,
|
||||
updates: routeTriggerUpdatedProperties,
|
||||
};
|
||||
|
||||
return {
|
||||
status: 'success',
|
||||
action: updateRouteTriggerAction,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
};
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -7,7 +7,7 @@ import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/comm
|
||||
import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util';
|
||||
import { FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type';
|
||||
import { compareTwoFlatViewField } from 'src/engine/core-modules/view/flat-view/utils/compare-two-flat-view-field.util';
|
||||
import { ViewFieldRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/view-field-related-flat-entity-maps.type';
|
||||
import { ViewFieldRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/view-field-related-flat-entity-maps.type';
|
||||
import {
|
||||
FlatEntityUpdateValidationArgs,
|
||||
FlatEntityValidationArgs,
|
||||
|
||||
+3
-1
@@ -3,6 +3,7 @@ import { type WorkspaceMigrationDatabaseEventTriggerActionV2 } from 'src/engine/
|
||||
import { type WorkspaceMigrationFieldActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-field-action-v2';
|
||||
import { type WorkspaceMigrationIndexActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-index-action-v2';
|
||||
import { type WorkspaceMigrationObjectActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-object-action-v2';
|
||||
import { type WorkspaceMigrationRouteTriggerActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-route-trigger-action-v2.type';
|
||||
import { type WorkspaceMigrationServerlessFunctionActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-serverless-function-action-v2.type';
|
||||
import { type WorkspaceMigrationViewActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-action-v2.type';
|
||||
import { type WorkspaceMigrationViewFieldActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-action-v2.type';
|
||||
@@ -15,7 +16,8 @@ export type WorkspaceMigrationActionV2 =
|
||||
| WorkspaceMigrationViewFieldActionV2
|
||||
| WorkspaceMigrationServerlessFunctionActionV2
|
||||
| WorkspaceMigrationDatabaseEventTriggerActionV2
|
||||
| WorkspaceMigrationCronTriggerActionV2;
|
||||
| WorkspaceMigrationCronTriggerActionV2
|
||||
| WorkspaceMigrationRouteTriggerActionV2;
|
||||
export type WorkspaceMigrationActionTypeV2 = WorkspaceMigrationActionV2['type'];
|
||||
|
||||
export type ExtractAction<T extends WorkspaceMigrationActionTypeV2> = Extract<
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
import { type FlatRouteTriggerPropertiesToCompare } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger-properties-to-compare.type';
|
||||
import { type FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type';
|
||||
import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type';
|
||||
|
||||
export type CreateRouteTriggerAction = {
|
||||
type: 'create_route_trigger';
|
||||
routeTrigger: FlatRouteTrigger;
|
||||
};
|
||||
|
||||
export type UpdateRouteTriggerAction = {
|
||||
type: 'update_route_trigger';
|
||||
routeTriggerId: string;
|
||||
updates: Array<
|
||||
{
|
||||
[P in FlatRouteTriggerPropertiesToCompare]: PropertyUpdate<
|
||||
FlatRouteTrigger,
|
||||
P
|
||||
>;
|
||||
}[FlatRouteTriggerPropertiesToCompare]
|
||||
>;
|
||||
};
|
||||
|
||||
export type DeleteRouteTriggerAction = {
|
||||
type: 'delete_route_trigger';
|
||||
routeTriggerId: string;
|
||||
};
|
||||
|
||||
export type WorkspaceMigrationRouteTriggerActionV2 =
|
||||
| CreateRouteTriggerAction
|
||||
| UpdateRouteTriggerAction
|
||||
| DeleteRouteTriggerAction;
|
||||
+30
@@ -6,11 +6,13 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
|
||||
import { CronTriggerExceptionCode } from 'src/engine/metadata-modules/cron-trigger/exceptions/cron-trigger.exception';
|
||||
import { FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type';
|
||||
import { CronTriggerRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/cron-trigger-related-flat-entity-maps.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
type CronTriggerValidationArgs = {
|
||||
flatCronTriggerToValidate: FlatCronTrigger;
|
||||
optimisticFlatCronTriggerMaps: FlatEntityMaps<FlatCronTrigger>;
|
||||
dependencyOptimisticFlatEntityMaps: CronTriggerRelatedFlatEntityMaps;
|
||||
};
|
||||
// TODO: validate settings integrity
|
||||
@Injectable()
|
||||
@@ -20,6 +22,7 @@ export class FlatCronTriggerValidatorService {
|
||||
public validateFlatCronTriggerUpdate({
|
||||
flatCronTriggerToValidate: updatedFlatCronTrigger,
|
||||
optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: CronTriggerValidationArgs): FailedFlatEntityValidation<FlatCronTrigger> {
|
||||
const errors = [];
|
||||
|
||||
@@ -34,6 +37,19 @@ export class FlatCronTriggerValidatorService {
|
||||
});
|
||||
}
|
||||
|
||||
const serverlessFunction =
|
||||
dependencyOptimisticFlatEntityMaps.flatServerlessFunctionMaps?.byId?.[
|
||||
updatedFlatCronTrigger.serverlessFunctionId
|
||||
];
|
||||
|
||||
if (!isDefined(serverlessFunction)) {
|
||||
errors.push({
|
||||
code: CronTriggerExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
message: t`Serverless function not found`,
|
||||
userFriendlyMessage: t`Serverless function not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'update_cron_trigger',
|
||||
errors,
|
||||
@@ -72,6 +88,7 @@ export class FlatCronTriggerValidatorService {
|
||||
public async validateFlatCronTriggerCreation({
|
||||
flatCronTriggerToValidate,
|
||||
optimisticFlatCronTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: CronTriggerValidationArgs): Promise<
|
||||
FailedFlatEntityValidation<FlatCronTrigger>
|
||||
> {
|
||||
@@ -89,6 +106,19 @@ export class FlatCronTriggerValidatorService {
|
||||
});
|
||||
}
|
||||
|
||||
const serverlessFunction =
|
||||
dependencyOptimisticFlatEntityMaps.flatServerlessFunctionMaps?.byId?.[
|
||||
flatCronTriggerToValidate.serverlessFunctionId
|
||||
];
|
||||
|
||||
if (!isDefined(serverlessFunction)) {
|
||||
errors.push({
|
||||
code: CronTriggerExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
message: t`Serverless function not found`,
|
||||
userFriendlyMessage: t`Serverless function not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'create_cron_trigger',
|
||||
errors,
|
||||
|
||||
+30
@@ -6,11 +6,13 @@ import { isDefined } from 'twenty-shared/utils';
|
||||
import { FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
|
||||
import { DatabaseEventTriggerExceptionCode } from 'src/engine/metadata-modules/database-event-trigger/exceptions/database-event-trigger.exception';
|
||||
import { FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type';
|
||||
import { DatabaseEventTriggerRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/database-event-trigger-related-flat-entity-maps.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
type DatabaseEventTriggerValidationArgs = {
|
||||
flatDatabaseEventTriggerToValidate: FlatDatabaseEventTrigger;
|
||||
optimisticFlatDatabaseEventTriggerMaps: FlatEntityMaps<FlatDatabaseEventTrigger>;
|
||||
dependencyOptimisticFlatEntityMaps: DatabaseEventTriggerRelatedFlatEntityMaps;
|
||||
};
|
||||
// TODO: validate settings integrity
|
||||
@Injectable()
|
||||
@@ -20,6 +22,7 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
public validateFlatDatabaseEventTriggerUpdate({
|
||||
flatDatabaseEventTriggerToValidate: updatedFlatDatabaseEventTrigger,
|
||||
optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: DatabaseEventTriggerValidationArgs): FailedFlatEntityValidation<FlatDatabaseEventTrigger> {
|
||||
const errors = [];
|
||||
|
||||
@@ -36,6 +39,19 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
});
|
||||
}
|
||||
|
||||
const serverlessFunction =
|
||||
dependencyOptimisticFlatEntityMaps.flatServerlessFunctionMaps?.byId?.[
|
||||
updatedFlatDatabaseEventTrigger.serverlessFunctionId
|
||||
];
|
||||
|
||||
if (!isDefined(serverlessFunction)) {
|
||||
errors.push({
|
||||
code: DatabaseEventTriggerExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
message: t`Serverless function not found`,
|
||||
userFriendlyMessage: t`Serverless function not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'update_database_event_trigger',
|
||||
errors,
|
||||
@@ -76,6 +92,7 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
public async validateFlatDatabaseEventTriggerCreation({
|
||||
flatDatabaseEventTriggerToValidate,
|
||||
optimisticFlatDatabaseEventTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: DatabaseEventTriggerValidationArgs): Promise<
|
||||
FailedFlatEntityValidation<FlatDatabaseEventTrigger>
|
||||
> {
|
||||
@@ -95,6 +112,19 @@ export class FlatDatabaseEventTriggerValidatorService {
|
||||
});
|
||||
}
|
||||
|
||||
const serverlessFunction =
|
||||
dependencyOptimisticFlatEntityMaps.flatServerlessFunctionMaps?.byId?.[
|
||||
flatDatabaseEventTriggerToValidate.serverlessFunctionId
|
||||
];
|
||||
|
||||
if (!isDefined(serverlessFunction)) {
|
||||
errors.push({
|
||||
code: DatabaseEventTriggerExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
message: t`Serverless function not found`,
|
||||
userFriendlyMessage: t`Serverless function not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'create_database_event_trigger',
|
||||
errors,
|
||||
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { isDefined } from 'twenty-shared/utils';
|
||||
|
||||
import { FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
|
||||
import { RouteTriggerExceptionCode } from 'src/engine/metadata-modules/route-trigger/exceptions/route-trigger.exception';
|
||||
import { FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type';
|
||||
import { RouteTriggerRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/route-trigger-related-flat-entity-maps.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
|
||||
type RouteTriggerValidationArgs = {
|
||||
flatRouteTriggerToValidate: FlatRouteTrigger;
|
||||
optimisticFlatRouteTriggerMaps: FlatEntityMaps<FlatRouteTrigger>;
|
||||
dependencyOptimisticFlatEntityMaps: RouteTriggerRelatedFlatEntityMaps;
|
||||
};
|
||||
|
||||
@Injectable()
|
||||
export class FlatRouteTriggerValidatorService {
|
||||
constructor() {}
|
||||
|
||||
public validateFlatRouteTriggerUpdate({
|
||||
flatRouteTriggerToValidate: updatedFlatRouteTrigger,
|
||||
optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: RouteTriggerValidationArgs): FailedFlatEntityValidation<FlatRouteTrigger> {
|
||||
const errors = [];
|
||||
|
||||
const existingFlatRouteTrigger =
|
||||
optimisticFlatRouteTriggerMaps.byId[updatedFlatRouteTrigger.id];
|
||||
|
||||
if (!isDefined(existingFlatRouteTrigger)) {
|
||||
errors.push({
|
||||
code: RouteTriggerExceptionCode.ROUTE_NOT_FOUND,
|
||||
message: t`Route not found`,
|
||||
userFriendlyMessage: t`Route not found`,
|
||||
});
|
||||
}
|
||||
|
||||
const serverlessFunction =
|
||||
dependencyOptimisticFlatEntityMaps.flatServerlessFunctionMaps.byId[
|
||||
updatedFlatRouteTrigger.serverlessFunctionId
|
||||
];
|
||||
|
||||
if (!isDefined(serverlessFunction)) {
|
||||
errors.push({
|
||||
code: RouteTriggerExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
message: t`Serverless function not found`,
|
||||
userFriendlyMessage: t`Serverless function not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'update_route_trigger',
|
||||
errors,
|
||||
flatEntityMinimalInformation: {
|
||||
id: updatedFlatRouteTrigger.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public validateFlatRouteTriggerDeletion({
|
||||
flatRouteTriggerToValidate: { id: routeTriggerIdToDelete },
|
||||
optimisticFlatRouteTriggerMaps,
|
||||
}: RouteTriggerValidationArgs): FailedFlatEntityValidation<FlatRouteTrigger> {
|
||||
const errors = [];
|
||||
|
||||
const existingFlatRouteTrigger =
|
||||
optimisticFlatRouteTriggerMaps.byId[routeTriggerIdToDelete];
|
||||
|
||||
if (!isDefined(existingFlatRouteTrigger)) {
|
||||
errors.push({
|
||||
code: RouteTriggerExceptionCode.ROUTE_NOT_FOUND,
|
||||
message: t`Route not found`,
|
||||
userFriendlyMessage: t`Route not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'delete_route_trigger',
|
||||
errors,
|
||||
flatEntityMinimalInformation: {
|
||||
id: routeTriggerIdToDelete,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public async validateFlatRouteTriggerCreation({
|
||||
flatRouteTriggerToValidate,
|
||||
optimisticFlatRouteTriggerMaps,
|
||||
dependencyOptimisticFlatEntityMaps,
|
||||
}: RouteTriggerValidationArgs): Promise<
|
||||
FailedFlatEntityValidation<FlatRouteTrigger>
|
||||
> {
|
||||
const errors = [];
|
||||
|
||||
if (
|
||||
isDefined(
|
||||
optimisticFlatRouteTriggerMaps.byId[flatRouteTriggerToValidate.id],
|
||||
)
|
||||
) {
|
||||
errors.push({
|
||||
code: RouteTriggerExceptionCode.ROUTE_ALREADY_EXIST,
|
||||
message: t`Route with same id already exists`,
|
||||
userFriendlyMessage: t`Route already exists`,
|
||||
});
|
||||
}
|
||||
|
||||
const existingFlatRouteTriggers = Object.values(
|
||||
optimisticFlatRouteTriggerMaps.byId,
|
||||
).filter(isDefined);
|
||||
|
||||
if (
|
||||
existingFlatRouteTriggers.find(
|
||||
(flatRouteTrigger) =>
|
||||
flatRouteTrigger.path === flatRouteTriggerToValidate.path,
|
||||
)
|
||||
) {
|
||||
errors.push({
|
||||
code: RouteTriggerExceptionCode.ROUTE_PATH_ALREADY_EXIST,
|
||||
message: t`Route with same path already exists`,
|
||||
userFriendlyMessage: t`Route path already exists`,
|
||||
});
|
||||
}
|
||||
|
||||
const serverlessFunction =
|
||||
dependencyOptimisticFlatEntityMaps.flatServerlessFunctionMaps.byId[
|
||||
flatRouteTriggerToValidate.serverlessFunctionId
|
||||
];
|
||||
|
||||
if (!isDefined(serverlessFunction)) {
|
||||
errors.push({
|
||||
code: RouteTriggerExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
|
||||
message: t`Serverless function not found`,
|
||||
userFriendlyMessage: t`Serverless function not found`,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
type: 'create_route_trigger',
|
||||
errors,
|
||||
flatEntityMinimalInformation: {
|
||||
id: flatRouteTriggerToValidate.id,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -8,7 +8,7 @@ import { ViewExceptionCode } from 'src/engine/core-modules/view/exceptions/view.
|
||||
import { FlatViewFieldMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type';
|
||||
import { FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type';
|
||||
import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type';
|
||||
import { ViewFieldRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/view-field-related-flat-entity-maps.type';
|
||||
import { ViewFieldRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/view-field-related-flat-entity-maps.type';
|
||||
|
||||
type ViewFieldValidationArgs = {
|
||||
flatViewFieldToValidate: FlatViewField;
|
||||
|
||||
+5
-2
@@ -1,12 +1,13 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
|
||||
import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
|
||||
import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service';
|
||||
import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
||||
import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service';
|
||||
import { FlatCronTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service';
|
||||
import { FlatDatabaseEventTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service';
|
||||
import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service';
|
||||
import { FlatIndexValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service';
|
||||
import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service';
|
||||
import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service';
|
||||
import { FlatServerlessFunctionValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-serverless-function-validator.service';
|
||||
import { FlatViewFieldValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service';
|
||||
import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service';
|
||||
@@ -23,6 +24,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace
|
||||
FlatDatabaseEventTriggerValidatorService,
|
||||
FlatCronTriggerValidatorService,
|
||||
FlatFieldMetadataTypeValidatorService,
|
||||
FlatRouteTriggerValidatorService,
|
||||
],
|
||||
exports: [
|
||||
FlatViewValidatorService,
|
||||
@@ -34,6 +36,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace
|
||||
FlatDatabaseEventTriggerValidatorService,
|
||||
FlatCronTriggerValidatorService,
|
||||
FlatFieldMetadataTypeValidatorService,
|
||||
FlatRouteTriggerValidatorService,
|
||||
],
|
||||
})
|
||||
export class WorkspaceMigrationBuilderValidatorsModule {}
|
||||
|
||||
+4
@@ -7,6 +7,7 @@ import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 's
|
||||
import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/services/workspace-migration-v2-field-actions-builder.service';
|
||||
import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/services/workspace-migration-v2-object-actions-builder.service';
|
||||
import { WorkspaceMigrationV2RouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ServerlessFunctionActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ViewFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service';
|
||||
import { WorkspaceMigrationV2ViewActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service';
|
||||
@@ -24,6 +25,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace-
|
||||
WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService,
|
||||
WorkspaceMigrationV2FieldActionsBuilderService,
|
||||
WorkspaceMigrationV2CronTriggerActionsBuilderService,
|
||||
WorkspaceMigrationV2RouteTriggerActionsBuilderService,
|
||||
],
|
||||
exports: [
|
||||
WorkspaceMigrationV2ViewActionsBuilderService,
|
||||
@@ -34,6 +36,8 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace-
|
||||
WorkspaceMigrationV2ServerlessFunctionActionsBuilderService,
|
||||
WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService,
|
||||
WorkspaceMigrationV2CronTriggerActionsBuilderService,
|
||||
WorkspaceMigrationV2RouteTriggerActionsBuilderService,
|
||||
FlatFieldMetadataTypeValidatorService,
|
||||
],
|
||||
})
|
||||
export class WorkspaceMigrationBuilderV2Module {}
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RouteTrigger } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity';
|
||||
import { CreateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-route-trigger-action-v2.type';
|
||||
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type';
|
||||
|
||||
@Injectable()
|
||||
export class CreateRouteTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'create_route_trigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerArgs<CreateRouteTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { routeTrigger } = action;
|
||||
|
||||
const routeTriggerRepository =
|
||||
queryRunner.manager.getRepository<RouteTrigger>(RouteTrigger);
|
||||
|
||||
await routeTriggerRepository.insert({
|
||||
...routeTrigger,
|
||||
workspaceId,
|
||||
});
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RouteTrigger } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity';
|
||||
import { DeleteRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-route-trigger-action-v2.type';
|
||||
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type';
|
||||
|
||||
@Injectable()
|
||||
export class DeleteRouteTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'delete_route_trigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerArgs<DeleteRouteTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner, workspaceId } = context;
|
||||
const { routeTriggerId } = action;
|
||||
|
||||
const routeTriggerRepository =
|
||||
queryRunner.manager.getRepository<RouteTrigger>(RouteTrigger);
|
||||
|
||||
await routeTriggerRepository.delete({
|
||||
id: routeTriggerId,
|
||||
workspaceId,
|
||||
});
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { RouteTrigger } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity';
|
||||
import { UpdateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-route-trigger-action-v2.type';
|
||||
import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type';
|
||||
import { fromWorkspaceMigrationUpdateActionToPartialEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-workspace-migration-update-action-to-partial-field-or-object-entity.util';
|
||||
|
||||
@Injectable()
|
||||
export class UpdateRouteTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
'update_route_trigger',
|
||||
) {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerArgs<UpdateRouteTriggerAction>,
|
||||
): Promise<void> {
|
||||
const { action, queryRunner } = context;
|
||||
const { routeTriggerId } = action;
|
||||
|
||||
const routeTriggerRepository =
|
||||
queryRunner.manager.getRepository<RouteTrigger>(RouteTrigger);
|
||||
|
||||
await routeTriggerRepository.update(
|
||||
routeTriggerId,
|
||||
fromWorkspaceMigrationUpdateActionToPartialEntity(action),
|
||||
);
|
||||
}
|
||||
}
|
||||
+7
@@ -15,6 +15,9 @@ import { DeleteIndexActionHandlerService } from 'src/engine/workspace-manager/wo
|
||||
import { CreateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/create-object-action-handler.service';
|
||||
import { DeleteObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/delete-object-action-handler.service';
|
||||
import { UpdateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/update-object-action-handler.service';
|
||||
import { CreateRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/create-route-trigger-action-handler.service';
|
||||
import { DeleteRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service';
|
||||
import { UpdateRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/update-route-trigger-action-handler.service';
|
||||
import { CreateServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/create-serverless-function-action-handler.service';
|
||||
import { DeleteServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service';
|
||||
import { UpdateServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/update-serverless-function-action-handler.service';
|
||||
@@ -58,6 +61,10 @@ import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/wor
|
||||
CreateCronTriggerActionHandlerService,
|
||||
DeleteCronTriggerActionHandlerService,
|
||||
UpdateCronTriggerActionHandlerService,
|
||||
|
||||
CreateRouteTriggerActionHandlerService,
|
||||
DeleteRouteTriggerActionHandlerService,
|
||||
UpdateRouteTriggerActionHandlerService,
|
||||
],
|
||||
})
|
||||
export class WorkspaceSchemaMigrationRunnerActionHandlersModule {}
|
||||
|
||||
Reference in New Issue
Block a user