diff --git a/server/migration/postgres/1765233385034-AddUniqueConstraintToPushSubscription.ts b/server/migration/postgres/1765233385034-AddUniqueConstraintToPushSubscription.ts index af245cfd..bcb79d45 100644 --- a/server/migration/postgres/1765233385034-AddUniqueConstraintToPushSubscription.ts +++ b/server/migration/postgres/1765233385034-AddUniqueConstraintToPushSubscription.ts @@ -6,6 +6,15 @@ export class AddUniqueConstraintToPushSubscription1765233385034 name = 'AddUniqueConstraintToPushSubscription1765233385034'; public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + DELETE FROM "user_push_subscription" + WHERE id NOT IN ( + SELECT MAX(id) + FROM "user_push_subscription" + GROUP BY "endpoint", "userId" + ) + `); + await queryRunner.query( `ALTER TABLE "user_push_subscription" ADD CONSTRAINT "UQ_6427d07d9a171a3a1ab87480005" UNIQUE ("endpoint", "userId")` ); diff --git a/server/migration/sqlite/1765233385034-AddUniqueConstraintToPushSubscription.ts b/server/migration/sqlite/1765233385034-AddUniqueConstraintToPushSubscription.ts index 48a8c6d6..c0ef0fc5 100755 --- a/server/migration/sqlite/1765233385034-AddUniqueConstraintToPushSubscription.ts +++ b/server/migration/sqlite/1765233385034-AddUniqueConstraintToPushSubscription.ts @@ -6,6 +6,15 @@ export class AddUniqueConstraintToPushSubscription1765233385034 name = 'AddUniqueConstraintToPushSubscription1765233385034'; public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + DELETE FROM "user_push_subscription" + WHERE id NOT IN ( + SELECT MAX(id) + FROM "user_push_subscription" + GROUP BY "endpoint", "userId" + ) + `); + await queryRunner.query( `CREATE UNIQUE INDEX "UQ_6427d07d9a171a3a1ab87480005" ON "user_push_subscription" ("endpoint", "userId")` );