Add ServerlessFunction to migration v2 (#14698)

This commit is contained in:
Weiko
2025-09-25 14:05:01 +02:00
committed by GitHub
parent edb331d68b
commit 188d66909d
45 changed files with 1671 additions and 112 deletions
@@ -5,4 +5,5 @@ export const ALL_FLAT_ENTITY_MAPS_PROPERTIES = [
'flatViewFieldMaps',
'flatViewMaps',
'flatIndexMaps',
'flatServerlessFunctionMaps',
] as const satisfies (keyof AllFlatEntityMaps)[];
@@ -9,4 +9,5 @@ export const EMPTY_ALL_FLAT_ENTITY_MAPS = {
flatIndexMaps: EMPTY_FLAT_ENTITY_MAPS,
flatViewFieldMaps: EMPTY_FLAT_ENTITY_MAPS,
flatViewMaps: EMPTY_FLAT_ENTITY_MAPS,
flatServerlessFunctionMaps: EMPTY_FLAT_ENTITY_MAPS,
} as const satisfies AllFlatEntityMaps;
@@ -2,6 +2,7 @@ import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types
import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type';
import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type';
import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type';
import { type FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type';
export type AllFlatEntitiesByMetadataEngineName = {
// flatFieldMetadata: FlatFieldMetadata;
@@ -9,4 +10,5 @@ export type AllFlatEntitiesByMetadataEngineName = {
view: FlatView;
viewField: FlatViewField;
index: FlatIndexMetadata;
serverlessFunction: FlatServerlessFunction;
};
@@ -234,7 +234,7 @@ export class LambdaDriver implements ServerlessDriver {
}
const layerArn = await this.createLayerIfNotExists(
serverlessFunction.layerVersion,
serverlessFunction.layerVersion ?? 0,
);
const lambdaBuildDirectoryManager = new LambdaBuildDirectoryManager();
@@ -49,7 +49,7 @@ export class LocalDriver implements ServerlessDriver {
async delete() {}
private async build(serverlessFunction: ServerlessFunctionEntity) {
await this.createLayerIfNotExists(serverlessFunction.layerVersion);
await this.createLayerIfNotExists(serverlessFunction.layerVersion ?? 0);
}
private async executeWithTimeout<T>(
@@ -113,6 +113,10 @@ export class LocalDriver implements ServerlessDriver {
await fs.writeFile(compiledCodeFilePath, compiledCode, 'utf8');
try {
if (!serverlessFunction.layerVersion) {
throw new Error('Layer version is not set');
}
await fs.symlink(
join(
this.getInMemoryLayerFolderPath(serverlessFunction.layerVersion),
@@ -9,12 +9,13 @@ 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';
export const getServerlessFolder = ({
serverlessFunction,
version,
}: {
serverlessFunction: ServerlessFunctionEntity;
serverlessFunction: ServerlessFunctionEntity | FlatServerlessFunction;
version?: 'draft' | 'latest' | (string & NonNullable<unknown>);
}) => {
if (version === 'latest' && !isDefined(serverlessFunction.latestVersion)) {