+1
-5
@@ -1,11 +1,7 @@
|
||||
import { type Sources } from 'twenty-shared/types';
|
||||
|
||||
import { type LogicFunctionEntity } from 'src/engine/metadata-modules/logic-function/logic-function.entity';
|
||||
import { type UniversalFlatEntityFrom } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/types/universal-flat-entity-from.type';
|
||||
|
||||
export type UniversalFlatLogicFunction = UniversalFlatEntityFrom<
|
||||
LogicFunctionEntity,
|
||||
'logicFunction'
|
||||
> & {
|
||||
code?: Sources;
|
||||
};
|
||||
>;
|
||||
|
||||
+1
-5
@@ -1,5 +1,3 @@
|
||||
import { type Sources } from 'twenty-shared/types';
|
||||
|
||||
import { type BaseFlatCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-create-workspace-migration-action.type';
|
||||
import { type BaseFlatDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-delete-workspace-migration-action.type';
|
||||
import { type BaseFlatUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-flat-update-workspace-migration-action.type';
|
||||
@@ -14,9 +12,7 @@ export type UniversalCreateLogicFunctionAction =
|
||||
BaseUniversalCreateWorkspaceMigrationAction<'logicFunction'>;
|
||||
|
||||
export type FlatUpdateLogicFunctionAction =
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'logicFunction'> & {
|
||||
code?: Sources;
|
||||
};
|
||||
BaseFlatUpdateWorkspaceMigrationAction<'logicFunction'>;
|
||||
|
||||
export type UniversalUpdateLogicFunctionAction =
|
||||
BaseUniversalUpdateWorkspaceMigrationAction<'logicFunction'>;
|
||||
|
||||
+1
-15
@@ -2,7 +2,6 @@ import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { ALL_METADATA_NAME } from 'twenty-shared/metadata';
|
||||
|
||||
import { findFlatEntityByUniversalIdentifier } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier.util';
|
||||
import { UniversalUpdateLogicFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/logic-function/types/workspace-migration-logic-function-action.type';
|
||||
import {
|
||||
ValidateAndBuildArgs,
|
||||
@@ -27,7 +26,6 @@ export class WorkspaceMigrationLogicFunctionActionsBuilderService extends Worksp
|
||||
public async validateAndBuild(
|
||||
args: ValidateAndBuildArgs<typeof ALL_METADATA_NAME.logicFunction>,
|
||||
): ValidateAndBuildReturnType<typeof ALL_METADATA_NAME.logicFunction> {
|
||||
const { to: toFlatEntityMaps } = args;
|
||||
const baseResult = await super.validateAndBuild(args);
|
||||
|
||||
if (baseResult.status === 'fail') {
|
||||
@@ -35,19 +33,7 @@ export class WorkspaceMigrationLogicFunctionActionsBuilderService extends Worksp
|
||||
}
|
||||
|
||||
const updatedActions = baseResult.actions.update.map((action) => {
|
||||
if (action.type !== 'update') {
|
||||
return action;
|
||||
}
|
||||
|
||||
const toLogicFunction = findFlatEntityByUniversalIdentifier({
|
||||
universalIdentifier: action.universalIdentifier,
|
||||
flatEntityMaps: toFlatEntityMaps,
|
||||
});
|
||||
|
||||
return {
|
||||
...action,
|
||||
code: toLogicFunction?.code,
|
||||
};
|
||||
return action;
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
+1
-27
@@ -1,16 +1,10 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FileFolder } from 'twenty-shared/types';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
|
||||
import { LogicFunctionEntity } from 'src/engine/metadata-modules/logic-function/logic-function.entity';
|
||||
import {
|
||||
LogicFunctionException,
|
||||
LogicFunctionExceptionCode,
|
||||
} from 'src/engine/metadata-modules/logic-function/logic-function.exception';
|
||||
import {
|
||||
FlatCreateLogicFunctionAction,
|
||||
UniversalCreateLogicFunctionAction,
|
||||
@@ -25,10 +19,6 @@ export class CreateLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
'create',
|
||||
'logicFunction',
|
||||
) {
|
||||
constructor(private readonly fileStorageService: FileStorageService) {
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction({
|
||||
action,
|
||||
flatApplication,
|
||||
@@ -48,25 +38,9 @@ export class CreateLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerContext<FlatCreateLogicFunctionAction>,
|
||||
): Promise<void> {
|
||||
const { flatAction, queryRunner, workspaceId, flatApplication } = context;
|
||||
const { flatAction, queryRunner, workspaceId } = context;
|
||||
const { flatEntity: logicFunction } = flatAction;
|
||||
|
||||
const applicationUniversalIdentifier = flatApplication.universalIdentifier;
|
||||
|
||||
const builtExists = await this.fileStorageService.checkFileExists({
|
||||
workspaceId,
|
||||
applicationUniversalIdentifier,
|
||||
fileFolder: FileFolder.BuiltLogicFunction,
|
||||
resourcePath: logicFunction.builtHandlerPath,
|
||||
});
|
||||
|
||||
if (!builtExists) {
|
||||
throw new LogicFunctionException(
|
||||
'Logic function built file missing before create',
|
||||
LogicFunctionExceptionCode.LOGIC_FUNCTION_CREATE_FAILED,
|
||||
);
|
||||
}
|
||||
|
||||
const logicFunctionRepository =
|
||||
queryRunner.manager.getRepository<LogicFunctionEntity>(
|
||||
LogicFunctionEntity,
|
||||
|
||||
+10
@@ -15,6 +15,7 @@ import {
|
||||
WorkspaceMigrationActionRunnerArgs,
|
||||
WorkspaceMigrationActionRunnerContext,
|
||||
} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type';
|
||||
import { getLogicFunctionSubfolderForFromSource } from 'src/engine/metadata-modules/logic-function/utils/get-logic-function-subfolder-for-from-source';
|
||||
|
||||
@Injectable()
|
||||
export class DeleteLogicFunctionActionHandlerService extends WorkspaceMigrationRunnerActionHandler(
|
||||
@@ -59,6 +60,15 @@ export class DeleteLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
|
||||
const applicationUniversalIdentifier = flatApplication.universalIdentifier;
|
||||
|
||||
await this.fileStorageService.delete({
|
||||
workspaceId,
|
||||
applicationUniversalIdentifier,
|
||||
fileFolder: FileFolder.Source,
|
||||
resourcePath: getLogicFunctionSubfolderForFromSource(
|
||||
flatLogicFunction.id,
|
||||
),
|
||||
});
|
||||
|
||||
await this.fileStorageService.delete({
|
||||
workspaceId,
|
||||
applicationUniversalIdentifier,
|
||||
|
||||
+1
-50
@@ -1,18 +1,9 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { FileFolder } from 'twenty-shared/types';
|
||||
|
||||
import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface';
|
||||
|
||||
import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service';
|
||||
import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util';
|
||||
import { findFlatEntityByUniversalIdentifierOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-universal-identifier-or-throw.util';
|
||||
import { LogicFunctionEntity } from 'src/engine/metadata-modules/logic-function/logic-function.entity';
|
||||
import {
|
||||
LogicFunctionException,
|
||||
LogicFunctionExceptionCode,
|
||||
} from 'src/engine/metadata-modules/logic-function/logic-function.exception';
|
||||
import { FlatLogicFunction } from 'src/engine/metadata-modules/logic-function/types/flat-logic-function.type';
|
||||
import { resolveUniversalUpdateRelationIdentifiersToIds } from 'src/engine/workspace-manager/workspace-migration/universal-flat-entity/utils/resolve-universal-update-relation-identifiers-to-ids.util';
|
||||
import {
|
||||
FlatUpdateLogicFunctionAction,
|
||||
@@ -28,10 +19,6 @@ export class UpdateLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
'update',
|
||||
'logicFunction',
|
||||
) {
|
||||
constructor(private readonly fileStorageService: FileStorageService) {
|
||||
super();
|
||||
}
|
||||
|
||||
override async transpileUniversalActionToFlatAction(
|
||||
context: WorkspaceMigrationActionRunnerArgs<UniversalUpdateLogicFunctionAction>,
|
||||
): Promise<FlatUpdateLogicFunctionAction> {
|
||||
@@ -59,7 +46,7 @@ export class UpdateLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
async executeForMetadata(
|
||||
context: WorkspaceMigrationActionRunnerContext<FlatUpdateLogicFunctionAction>,
|
||||
): Promise<void> {
|
||||
const { flatAction, queryRunner, flatApplication, workspaceId } = context;
|
||||
const { flatAction, queryRunner, workspaceId } = context;
|
||||
const { entityId, update } = flatAction;
|
||||
|
||||
const logicFunctionRepository =
|
||||
@@ -68,41 +55,5 @@ export class UpdateLogicFunctionActionHandlerService extends WorkspaceMigrationR
|
||||
);
|
||||
|
||||
await logicFunctionRepository.update({ id: entityId, workspaceId }, update);
|
||||
|
||||
const flatLogicFunction = findFlatEntityByIdInFlatEntityMapsOrThrow({
|
||||
flatEntityId: entityId,
|
||||
flatEntityMaps: context.allFlatEntityMaps.flatLogicFunctionMaps,
|
||||
});
|
||||
|
||||
const applicationUniversalIdentifier = flatApplication.universalIdentifier;
|
||||
|
||||
if (update.checksum) {
|
||||
await this.verifySourceAndBuiltFilesExist({
|
||||
flatLogicFunction,
|
||||
applicationUniversalIdentifier,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private async verifySourceAndBuiltFilesExist({
|
||||
flatLogicFunction,
|
||||
applicationUniversalIdentifier,
|
||||
}: {
|
||||
flatLogicFunction: FlatLogicFunction;
|
||||
applicationUniversalIdentifier: string;
|
||||
}): Promise<void> {
|
||||
const builtExists = await this.fileStorageService.checkFileExists({
|
||||
workspaceId: flatLogicFunction.workspaceId,
|
||||
applicationUniversalIdentifier,
|
||||
fileFolder: FileFolder.BuiltLogicFunction,
|
||||
resourcePath: flatLogicFunction.builtHandlerPath,
|
||||
});
|
||||
|
||||
if (!builtExists) {
|
||||
throw new LogicFunctionException(
|
||||
'Logic function source or built file missing before update',
|
||||
LogicFunctionExceptionCode.LOGIC_FUNCTION_NOT_READY,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user