mirror of
https://github.com/benjamin-wilson/public-pool.git
synced 2026-09-29 09:05:06 -07:00
Make share index migration online safe
This commit is contained in:
@@ -10,7 +10,11 @@ export class AcceptedShareIndex1780862400000 implements MigrationInterface {
|
||||
await queryRunner.query(`
|
||||
SELECT setval(
|
||||
'accepted_share_index_seq',
|
||||
GREATEST((SELECT COUNT(*) FROM "accepted_share_entity") + 1, 1),
|
||||
GREATEST(
|
||||
(SELECT COUNT(*) FROM "accepted_share_entity") + 1,
|
||||
(SELECT COALESCE(MAX("shareIndex"), 0) + 1 FROM "accepted_share_entity"),
|
||||
1
|
||||
),
|
||||
false
|
||||
)
|
||||
`);
|
||||
@@ -18,28 +22,10 @@ export class AcceptedShareIndex1780862400000 implements MigrationInterface {
|
||||
ALTER TABLE "accepted_share_entity"
|
||||
ALTER COLUMN "shareIndex" SET DEFAULT nextval('accepted_share_index_seq')
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
WITH ordered AS (
|
||||
SELECT
|
||||
"id",
|
||||
"acceptedAt",
|
||||
row_number() OVER (ORDER BY "acceptedAt", "id") AS "shareIndex"
|
||||
FROM "accepted_share_entity"
|
||||
WHERE "shareIndex" IS NULL
|
||||
)
|
||||
UPDATE "accepted_share_entity" AS share
|
||||
SET "shareIndex" = ordered."shareIndex"
|
||||
FROM ordered
|
||||
WHERE share."id" = ordered."id"
|
||||
AND share."acceptedAt" = ordered."acceptedAt"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "accepted_share_entity"
|
||||
ALTER COLUMN "shareIndex" SET NOT NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE INDEX IF NOT EXISTS "IDX_accepted_share_order"
|
||||
ON "accepted_share_entity" ("shareIndex" DESC)
|
||||
WHERE "shareIndex" IS NOT NULL
|
||||
`);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user