summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-29 17:20:11 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-29 17:20:11 -0400
commit548000bb986532f460d718d2eb31f641050d4e38 (patch)
tree204a5971984ea84ed51c41d06b75661ef3974642
parentmerge: Merge stable into develop (!1052) (diff)
downloadsharkey-548000bb986532f460d718d2eb31f641050d4e38.tar.gz
sharkey-548000bb986532f460d718d2eb31f641050d4e38.tar.bz2
sharkey-548000bb986532f460d718d2eb31f641050d4e38.zip
fix the AddMissingIndexes1747938628395 migration
- Delete duplicate list memberships - Drop indexes if they already exist
-rw-r--r--packages/backend/migration/1747938628395-add-missing-indexes.js42
1 files changed, 29 insertions, 13 deletions
diff --git a/packages/backend/migration/1747938628395-add-missing-indexes.js b/packages/backend/migration/1747938628395-add-missing-indexes.js
index 745b39c855..0229a6c898 100644
--- a/packages/backend/migration/1747938628395-add-missing-indexes.js
+++ b/packages/backend/migration/1747938628395-add-missing-indexes.js
@@ -4,19 +4,35 @@
*/
export class AddMissingIndexes1747938628395 {
- name = 'AddMissingIndexes1747938628395'
+ name = 'AddMissingIndexes1747938628395'
- async up(queryRunner) {
- await queryRunner.query(`CREATE INDEX "IDX_58699f75b9cf904f5f007909cb" ON "user_profile" ("birthday") `);
- await queryRunner.query(`CREATE INDEX "IDX_021015e6683570ae9f6b0c62be" ON "user_list_membership" ("userId") `);
- await queryRunner.query(`CREATE INDEX "IDX_cddcaf418dc4d392ecfcca842a" ON "user_list_membership" ("userListId") `);
- await queryRunner.query(`CREATE UNIQUE INDEX "IDX_e4f3094c43f2d665e6030b0337" ON "user_list_membership" ("userId", "userListId") `);
- }
+ async up(queryRunner) {
+ // Some instances have duplicate list entries
+ await queryRunner.query(`
+ DELETE FROM "user_list_membership"
+ WHERE "id" NOT IN (
+ SELECT MIN("id")
+ FROM "user_list_membership"
+ GROUP BY "userId", "userListId"
+ )`);
- async down(queryRunner) {
- await queryRunner.query(`DROP INDEX "public"."IDX_e4f3094c43f2d665e6030b0337"`);
- await queryRunner.query(`DROP INDEX "public"."IDX_cddcaf418dc4d392ecfcca842a"`);
- await queryRunner.query(`DROP INDEX "public"."IDX_021015e6683570ae9f6b0c62be"`);
- await queryRunner.query(`DROP INDEX "public"."IDX_58699f75b9cf904f5f007909cb"`);
- }
+ // Some instances already have these indexes, for an unknown reason
+ await queryRunner.query(`DROP INDEX IF EXISTS "public"."IDX_e4f3094c43f2d665e6030b0337"`);
+ await queryRunner.query(`DROP INDEX IF EXISTS "public"."IDX_cddcaf418dc4d392ecfcca842a"`);
+ await queryRunner.query(`DROP INDEX IF EXISTS "public"."IDX_021015e6683570ae9f6b0c62be"`);
+ await queryRunner.query(`DROP INDEX IF EXISTS "public"."IDX_58699f75b9cf904f5f007909cb"`);
+
+ // Now the actual migration
+ await queryRunner.query(`CREATE INDEX "IDX_58699f75b9cf904f5f007909cb" ON "user_profile" ("birthday") `);
+ await queryRunner.query(`CREATE INDEX "IDX_021015e6683570ae9f6b0c62be" ON "user_list_membership" ("userId") `);
+ await queryRunner.query(`CREATE INDEX "IDX_cddcaf418dc4d392ecfcca842a" ON "user_list_membership" ("userListId") `);
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_e4f3094c43f2d665e6030b0337" ON "user_list_membership" ("userId", "userListId") `);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`DROP INDEX "public"."IDX_e4f3094c43f2d665e6030b0337"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_cddcaf418dc4d392ecfcca842a"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_021015e6683570ae9f6b0c62be"`);
+ await queryRunner.query(`DROP INDEX "public"."IDX_58699f75b9cf904f5f007909cb"`);
+ }
}