From 7795f1b36ba03877ec222531326664661a93628a Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 4 Oct 2023 23:21:50 +1100 Subject: refactor channel positions in guild --- .../postgres/1696420827239-guildChannelOrdering.ts | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/util/migration/postgres/1696420827239-guildChannelOrdering.ts (limited to 'src/util/migration/postgres') diff --git a/src/util/migration/postgres/1696420827239-guildChannelOrdering.ts b/src/util/migration/postgres/1696420827239-guildChannelOrdering.ts new file mode 100644 index 00000000..82085991 --- /dev/null +++ b/src/util/migration/postgres/1696420827239-guildChannelOrdering.ts @@ -0,0 +1,40 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class guildChannelOrdering1696420827239 implements MigrationInterface { + name = "guildChannelOrdering1696420827239"; + + public async up(queryRunner: QueryRunner): Promise { + const guilds = await queryRunner.query( + `SELECT id FROM guilds`, + undefined, + true, + ); + + await queryRunner.query( + `ALTER TABLE guilds ADD channelOrdering text NOT NULL DEFAULT '[]'`, + ); + + for (const guild_id of guilds.records.map((x) => x.id)) { + const channels: Array<{ position: number; id: string }> = ( + await queryRunner.query( + `SELECT id, position FROM channels WHERE guild_id = $1`, + [guild_id], + true, + ) + ).records; + + channels.sort((a, b) => a.position - b.position); + + await queryRunner.query( + `UPDATE guilds SET channelOrdering = $1 WHERE id = $2`, + [JSON.stringify(channels.map((x) => x.id)), guild_id], + ); + } + + await queryRunner.query(`ALTER TABLE channels DROP COLUMN position`); + } + + public async down(): Promise { + // don't care actually, sorry. + } +} -- cgit 1.5.1