Files
twenty/packages/twenty-server/src/engine/metadata-modules/serverless-function/utils/from-update-serverless-function-input-to-flat-serverless-function-to-update-or-throw.util.ts
T

52 lines
2.3 KiB
TypeScript

import { t } from '@lingui/core/macro';
import {
extractAndSanitizeObjectStringFields,
isDefined,
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties,
} from 'twenty-shared/utils';
import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type';
import { FLAT_SERVERLESS_FUNCTION_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/serverless-function/constants/flat-serverless-function-editable-properties.constant';
import { type UpdateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/update-serverless-function.input';
import {
ServerlessFunctionException,
ServerlessFunctionExceptionCode,
} from 'src/engine/metadata-modules/serverless-function/serverless-function.exception';
import { type FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type';
import { mergeUpdateInExistingRecord } from 'src/utils/merge-update-in-existing-record.util';
export const fromUpdateServerlessFunctionInputToFlatServerlessFunctionToUpdateOrThrow =
({
updateServerlessFunctionInput: rawUpdateServerlessFunctionInput,
flatServerlessFunctionMaps,
}: {
updateServerlessFunctionInput: UpdateServerlessFunctionInput;
flatServerlessFunctionMaps: FlatEntityMaps<FlatServerlessFunction>;
}): FlatServerlessFunction => {
const { id: serverlessFunctionToUpdateId } =
trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties(
rawUpdateServerlessFunctionInput,
['id'],
);
const existingFlatServerlessFunctionToUpdate =
flatServerlessFunctionMaps.byId[serverlessFunctionToUpdateId];
if (!isDefined(existingFlatServerlessFunctionToUpdate)) {
throw new ServerlessFunctionException(
t`Serverless function to update not found`,
ServerlessFunctionExceptionCode.SERVERLESS_FUNCTION_NOT_FOUND,
);
}
const updatedEditableFieldProperties = extractAndSanitizeObjectStringFields(
rawUpdateServerlessFunctionInput,
FLAT_SERVERLESS_FUNCTION_EDITABLE_PROPERTIES,
);
return mergeUpdateInExistingRecord({
existing: existingFlatServerlessFunctionToUpdate,
properties: FLAT_SERVERLESS_FUNCTION_EDITABLE_PROPERTIES,
update: updatedEditableFieldProperties,
});
};