diff --git a/src/util/entities/PushSubscription.ts b/src/util/entities/PushSubscription.ts index 07841ca7..124470e8 100644 --- a/src/util/entities/PushSubscription.ts +++ b/src/util/entities/PushSubscription.ts @@ -24,6 +24,6 @@ export class PushSubscription extends BaseClass { @Column({ type: "varchar", nullable: true }) p256dh?: string; - @Column({ type: "varchar", nullable: false }) + @Column({ type: "varchar", nullable: true }) type: "webpush" | "basic" = "webpush"; } diff --git a/src/util/migration/postgres/1766283926503-makeKeysNullable.ts b/src/util/migration/postgres/1766283926503-makeKeysNullable.ts index fd9318b5..dd5b9ace 100644 --- a/src/util/migration/postgres/1766283926503-makeKeysNullable.ts +++ b/src/util/migration/postgres/1766283926503-makeKeysNullable.ts @@ -1,69 +1,49 @@ import { MigrationInterface, QueryRunner } from "typeorm"; export class MakeKeysNullable1766283926503 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(` - CREATE TABLE "temporary_push_subscriptions" ( - "id" varchar PRIMARY KEY NOT NULL, - "user_id" varchar, - "endpoint" varchar NOT NULL, - "expiration_time" bigint, - "auth" varchar, - "p256dh" varchar, - "type" text NOT NULL DEFAULT 'webpush', - CONSTRAINT "UQ_push_subscriptions_endpoint" UNIQUE ("endpoint"), - CONSTRAINT "FK_push_subscriptions_user" - FOREIGN KEY ("user_id") REFERENCES "users"("id") - ON DELETE SET NULL ON UPDATE NO ACTION - ) - `); - - await queryRunner.query(` - INSERT INTO "temporary_push_subscriptions"("id", "user_id", "endpoint", "expiration_time", "auth", "p256dh", "type") - SELECT "id", "user_id", "endpoint", "expiration_time", "auth", "p256dh", 'webpush' - FROM "push_subscriptions" - `); - - await queryRunner.query(`DROP TABLE "push_subscriptions"`); - - await queryRunner.query(`ALTER TABLE "temporary_push_subscriptions" RENAME TO "push_subscriptions"`); - - await queryRunner.query(` - CREATE UNIQUE INDEX IF NOT EXISTS "idx_push_subscriptions_endpoint" - ON "push_subscriptions" ("endpoint") - `); - } - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(` - CREATE TABLE "temporary_push_subscriptions" ( - "id" varchar PRIMARY KEY NOT NULL, - "user_id" varchar, - "endpoint" varchar NOT NULL, - "expiration_time" bigint, - "auth" varchar NOT NULL, - "p256dh" varchar NOT NULL, - CONSTRAINT "UQ_push_subscriptions_endpoint" UNIQUE ("endpoint"), - CONSTRAINT "FK_push_subscriptions_user" - FOREIGN KEY ("user_id") REFERENCES "users"("id") - ON DELETE SET NULL ON UPDATE NO ACTION - ) - `); - - await queryRunner.query(` - INSERT INTO "temporary_push_subscriptions"("id", "user_id", "endpoint", "expiration_time", "auth", "p256dh") - SELECT "id", "user_id", "endpoint", "expiration_time", "auth", "p256dh" - FROM "push_subscriptions" - WHERE "auth" IS NOT NULL AND "p256dh" IS NOT NULL - `); - - await queryRunner.query(`DROP TABLE "push_subscriptions"`); - - await queryRunner.query(`ALTER TABLE "temporary_push_subscriptions" RENAME TO "push_subscriptions"`); - - await queryRunner.query(` - CREATE UNIQUE INDEX IF NOT EXISTS "idx_push_subscriptions_endpoint" - ON "push_subscriptions" ("endpoint") - `); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + ALTER COLUMN "auth" DROP NOT NULL; + `); + + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + ALTER COLUMN "p256dh" DROP NOT NULL; + `); + + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + ADD COLUMN "type" text; + `); + + await queryRunner.query(` + UPDATE "push_subscriptions" + SET "type" = 'webpush' + WHERE "type" IS NULL; + `); + + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + ALTER COLUMN "type" SET NOT NULL; + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + DROP COLUMN "type"; + `); + + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + ALTER COLUMN "auth" SET NOT NULL; + `); + + await queryRunner.query(` + ALTER TABLE "push_subscriptions" + ALTER COLUMN "p256dh" SET NOT NULL; + `); + } } \ No newline at end of file