Files
twenty/packages/twenty-server/src/engine/metadata-modules/serverless-function/utils/from-create-serverless-function-input-to-flat-serverless-function.util.ts
T
Charles Bochet a18203934c Fix flat entity maps date serialization (#16420)
Changes:
- as we store date in redis as serialized, let's make all flatEntity
dates as string. This requires changing FlatEntity types and making sure
that entity are converted to flatEntity and flatEntity to dtos
2025-12-09 16:41:50 +01:00

60 lines
2.3 KiB
TypeScript

import { v4 } from 'uuid';
import { type CreateServerlessFunctionInput } from 'src/engine/metadata-modules/serverless-function/dtos/create-serverless-function.input';
import {
DEFAULT_HANDLER_NAME,
DEFAULT_HANDLER_PATH,
ServerlessFunctionRuntime,
} from 'src/engine/metadata-modules/serverless-function/serverless-function.entity';
import { type FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type';
import { serverlessFunctionCreateHash } from 'src/engine/metadata-modules/serverless-function/utils/serverless-function-create-hash.utils';
export type FromCreateServerlessFunctionInputToFlatServerlessFunctionArgs = {
createServerlessFunctionInput: CreateServerlessFunctionInput & {
serverlessFunctionLayerId: string;
};
workspaceId: string;
workspaceCustomApplicationId: string;
};
export const fromCreateServerlessFunctionInputToFlatServerlessFunction = ({
createServerlessFunctionInput: rawCreateServerlessFunctionInput,
workspaceId,
workspaceCustomApplicationId,
}: FromCreateServerlessFunctionInputToFlatServerlessFunctionArgs): FlatServerlessFunction => {
const id = v4();
const currentDate = new Date();
return {
cronTriggerIds: [],
databaseEventTriggerIds: [],
routeTriggerIds: [],
id,
name: rawCreateServerlessFunctionInput.name,
description: rawCreateServerlessFunctionInput.description ?? null,
handlerPath:
rawCreateServerlessFunctionInput.handlerPath ?? DEFAULT_HANDLER_PATH,
handlerName:
rawCreateServerlessFunctionInput.handlerName ?? DEFAULT_HANDLER_NAME,
universalIdentifier:
rawCreateServerlessFunctionInput.universalIdentifier ?? id,
createdAt: currentDate.toISOString(),
updatedAt: currentDate.toISOString(),
deletedAt: null,
latestVersion: null,
publishedVersions: [],
applicationId: workspaceCustomApplicationId,
runtime: ServerlessFunctionRuntime.NODE22,
timeoutSeconds: rawCreateServerlessFunctionInput.timeoutSeconds ?? 300,
serverlessFunctionLayerId:
rawCreateServerlessFunctionInput.serverlessFunctionLayerId,
workspaceId,
code: rawCreateServerlessFunctionInput?.code,
checksum: rawCreateServerlessFunctionInput?.code
? serverlessFunctionCreateHash(
JSON.stringify(rawCreateServerlessFunctionInput.code),
)
: null,
};
};