From 4ededd753d17ccbffd3bb4d6c9610a26073bf279 Mon Sep 17 00:00:00 2001 From: David Schwarz Date: Tue, 10 Mar 2026 14:38:53 +0100 Subject: [PATCH] Add missed migrations due to field changes and table renaming in brevo module + demo --- .../fix-brevo-table-constraints-migration.md | 10 ++++++++ .../db/migrations/Migration20260310094014.ts | 14 +++++++++++ .../brevo-email-import-log.entity.factory.ts | 5 ++-- .../migrations/Migration20260310111347.ts | 25 +++++++++++++++++++ .../src/mikro-orm/migrations/migrations.ts | 2 ++ 5 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 .changeset/fix-brevo-table-constraints-migration.md create mode 100644 demo/api/src/db/migrations/Migration20260310094014.ts create mode 100644 packages/api/brevo-api/src/mikro-orm/migrations/Migration20260310111347.ts diff --git a/.changeset/fix-brevo-table-constraints-migration.md b/.changeset/fix-brevo-table-constraints-migration.md new file mode 100644 index 00000000000..b19e639e0c9 --- /dev/null +++ b/.changeset/fix-brevo-table-constraints-migration.md @@ -0,0 +1,10 @@ +--- +"@comet/brevo-api": patch +--- + +Add migration to fix Brevo table constraints and column types + +- Update `BrevoEmailCampaign_targetGroups` primary key and foreign key constraints to use correct naming +- Add nullable to `BrevoEmailImportLog.importId` Property and Field +- Remove Property decorator from `BrevoEmailImportLog.contactSource` since it already has Enum decorator +- Change `BrevoTargetGroup.isMainList` column to not null diff --git a/demo/api/src/db/migrations/Migration20260310094014.ts b/demo/api/src/db/migrations/Migration20260310094014.ts new file mode 100644 index 00000000000..919b511f9d3 --- /dev/null +++ b/demo/api/src/db/migrations/Migration20260310094014.ts @@ -0,0 +1,14 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20260310094014 extends Migration { + + override async up(): Promise { + // Migrations for demo code changes + this.addSql(`alter table "News" alter column "category" drop default;`); + this.addSql(`alter table "News" alter column "category" type text using ("category"::text);`); + + this.addSql(`alter table "PageTreeNode" drop constraint if exists "PageTreeNode_userGroup_check";`); + this.addSql(`alter table "PageTreeNode" add constraint "PageTreeNode_userGroup_check" check("userGroup" in ('all', 'admin', 'editor'));`); + } + +} diff --git a/packages/api/brevo-api/src/brevo-email-import-log/entity/brevo-email-import-log.entity.factory.ts b/packages/api/brevo-api/src/brevo-email-import-log/entity/brevo-email-import-log.entity.factory.ts index c4ae45798d6..6bfaf51b59a 100644 --- a/packages/api/brevo-api/src/brevo-email-import-log/entity/brevo-email-import-log.entity.factory.ts +++ b/packages/api/brevo-api/src/brevo-email-import-log/entity/brevo-email-import-log.entity.factory.ts @@ -58,12 +58,11 @@ export function createBrevoEmailImportLogEntity({ Scope }: { Scope: Type Scope) scope: typeof Scope; - @Property({ columnType: "uuid" }) + @Property({ columnType: "uuid", nullable: true }) @IsUndefinable() - @Field(() => ID) + @Field(() => ID, { nullable: true }) importId?: string = uuid(); - @Property({ columnType: "text" }) @Field(() => ContactSource) @Enum({ items: () => ContactSource }) contactSource: ContactSource; diff --git a/packages/api/brevo-api/src/mikro-orm/migrations/Migration20260310111347.ts b/packages/api/brevo-api/src/mikro-orm/migrations/Migration20260310111347.ts new file mode 100644 index 00000000000..55a451a81f8 --- /dev/null +++ b/packages/api/brevo-api/src/mikro-orm/migrations/Migration20260310111347.ts @@ -0,0 +1,25 @@ +import { Migration } from "@mikro-orm/migrations"; + +export class Migration20260310111347 extends Migration { + async up(): Promise { + // Required migrations for constraints due to adding Brevo prefix to tables + this.addSql(`alter table "BrevoEmailCampaign_targetGroups" drop constraint "EmailCampaign_targetGroups_pkey";`); + this.addSql( + `alter table "BrevoEmailCampaign_targetGroups" add constraint "BrevoEmailCampaign_targetGroups_pkey" primary key ("brevoEmailCampaign", "brevoTargetGroup");`, + ); + + this.addSql(`alter table "BrevoEmailCampaign_targetGroups" drop constraint "EmailCampaign_targetGroups_emailCampaign_foreign";`); + this.addSql( + `alter table "BrevoEmailCampaign_targetGroups" add constraint "BrevoEmailCampaign_targetGroups_brevoEmailCampaign_foreign" foreign key ("brevoEmailCampaign") references "BrevoEmailCampaign" ("id") on update cascade on delete cascade;`, + ); + + this.addSql(`alter table "BrevoEmailCampaign_targetGroups" drop constraint "EmailCampaign_targetGroups_targetGroup_foreign";`); + this.addSql( + `alter table "BrevoEmailCampaign_targetGroups" add constraint "BrevoEmailCampaign_targetGroups_brevoTargetGroup_foreign" foreign key ("brevoTargetGroup") references "BrevoTargetGroup" ("id") on update cascade on delete cascade;`, + ); + + // Migrations for Brevo code column changes + this.addSql(`alter table "BrevoTargetGroup" alter column "isMainList" type boolean using ("isMainList"::boolean);`); + this.addSql(`alter table "BrevoTargetGroup" alter column "isMainList" set not null;`); + } +} diff --git a/packages/api/brevo-api/src/mikro-orm/migrations/migrations.ts b/packages/api/brevo-api/src/mikro-orm/migrations/migrations.ts index d9e53bad99b..29b16189435 100644 --- a/packages/api/brevo-api/src/mikro-orm/migrations/migrations.ts +++ b/packages/api/brevo-api/src/mikro-orm/migrations/migrations.ts @@ -18,6 +18,7 @@ import { Migration20250221073825 } from "./Migration20250221073825"; import { Migration20250317131301 } from "./Migration20250317131301"; import { Migration20250321132034 } from "./Migration20250321132034"; import { Migration20250703155205 } from "./Migration20250703155205"; +import { Migration20260310111347 } from "./Migration20260310111347"; export const migrationsList: MigrationObject[] = [ { name: "Migration20240115095733", class: Migration20240115095733 }, @@ -38,4 +39,5 @@ export const migrationsList: MigrationObject[] = [ { name: "Migration20250321132034", class: Migration20250321132034 }, { name: "Migration20250317131301", class: Migration20250317131301 }, { name: "Migration20250703155205", class: Migration20250703155205 }, + { name: "Migration20260310111347", class: Migration20260310111347 }, ];