From c395fed26a91715e9cc2805f10935c0b0deec884 Mon Sep 17 00:00:00 2001 From: martmull Date: Thu, 23 Oct 2025 09:58:52 +0200 Subject: [PATCH] Set serverlessFunctionLayerId not nullable (#15272) As title Existing Null serverlessFunctionLayerIds have been filled with `upgrade:1-8:fill-null-serverless-function-layer-id` command See 0 such records in production image --- ...setServerlessFunctionLayerIdNotNullable.ts | 31 +++++++++++++++++++ .../serverless-function.entity.ts | 3 +- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 packages/twenty-server/src/database/typeorm/core/migrations/common/1761153071116-setServerlessFunctionLayerIdNotNullable.ts diff --git a/packages/twenty-server/src/database/typeorm/core/migrations/common/1761153071116-setServerlessFunctionLayerIdNotNullable.ts b/packages/twenty-server/src/database/typeorm/core/migrations/common/1761153071116-setServerlessFunctionLayerIdNotNullable.ts new file mode 100644 index 0000000000..f2fdaa7d58 --- /dev/null +++ b/packages/twenty-server/src/database/typeorm/core/migrations/common/1761153071116-setServerlessFunctionLayerIdNotNullable.ts @@ -0,0 +1,31 @@ +import { type MigrationInterface, type QueryRunner } from 'typeorm'; + +export class SetServerlessFunctionLayerIdNotNullable1761153071116 + implements MigrationInterface +{ + name = 'SetServerlessFunctionLayerIdNotNullable1761153071116'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "core"."serverlessFunction" DROP CONSTRAINT "FK_4b9625a4babf7f4fa942fd26514"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."serverlessFunction" ALTER COLUMN "serverlessFunctionLayerId" SET NOT NULL`, + ); + await queryRunner.query( + `ALTER TABLE "core"."serverlessFunction" ADD CONSTRAINT "FK_4b9625a4babf7f4fa942fd26514" FOREIGN KEY ("serverlessFunctionLayerId") REFERENCES "core"."serverlessFunctionLayer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "core"."serverlessFunction" DROP CONSTRAINT "FK_4b9625a4babf7f4fa942fd26514"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."serverlessFunction" ALTER COLUMN "serverlessFunctionLayerId" DROP NOT NULL`, + ); + await queryRunner.query( + `ALTER TABLE "core"."serverlessFunction" ADD CONSTRAINT "FK_4b9625a4babf7f4fa942fd26514" FOREIGN KEY ("serverlessFunctionLayerId") REFERENCES "core"."serverlessFunctionLayer"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`, + ); + } +} diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts index e9b82e9f1a..3dbb60b5a0 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts @@ -68,8 +68,7 @@ export class ServerlessFunctionEntity @Column({ nullable: true, type: 'text' }) checksum: string | null; - // TODO: should be set to nullable: false when 1.8 released in production - @Column({ nullable: true, type: 'uuid' }) + @Column({ nullable: false, type: 'uuid' }) serverlessFunctionLayerId: string; @ManyToOne(