fix arrays in migration add_instance_block_columns

This commit is contained in:
Hazelnoot 2025-05-25 12:43:43 -04:00
parent ab96402c2a
commit 9e282b1d10

View file

@ -37,32 +37,32 @@ export class AddInstanceBlockColumns1748105111513 {
// Blocked hosts // Blocked hosts
if (meta.blockedHosts.length > 0) { if (meta.blockedHosts.length > 0) {
const pattern = buildPatterns(meta.blockedHosts); const patterns = buildPatterns(meta.blockedHosts);
await queryRunner.query(`UPDATE "instance" SET "isBlocked" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ${pattern}`); await queryRunner.query(`UPDATE "instance" SET "isBlocked" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ($1)`, [ patterns ]);
} }
// Silenced hosts // Silenced hosts
if (meta.silencedHosts.length > 0) { if (meta.silencedHosts.length > 0) {
const pattern = buildPatterns(meta.silencedHosts); const patterns = buildPatterns(meta.silencedHosts);
await queryRunner.query(`UPDATE "instance" SET "isSilenced" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ${pattern}`); await queryRunner.query(`UPDATE "instance" SET "isSilenced" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ($1)`, [ patterns ]);
} }
// Media silenced hosts // Media silenced hosts
if (meta.mediaSilencedHosts.length > 0) { if (meta.mediaSilencedHosts.length > 0) {
const pattern = buildPatterns(meta.mediaSilencedHosts); const patterns = buildPatterns(meta.mediaSilencedHosts);
await queryRunner.query(`UPDATE "instance" SET "isMediaSilenced" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ${pattern}`); await queryRunner.query(`UPDATE "instance" SET "isMediaSilenced" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ($1)`, [ patterns ]);
} }
// Allow-listed hosts // Allow-listed hosts
if (meta.federationHosts.length > 0) { if (meta.federationHosts.length > 0) {
const pattern = buildPatterns(meta.federationHosts); const patterns = buildPatterns(meta.federationHosts);
await queryRunner.query(`UPDATE "instance" SET "isAllowListed" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ${pattern}`); await queryRunner.query(`UPDATE "instance" SET "isAllowListed" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ($1)`, [ patterns ]);
} }
// Bubbled hosts // Bubbled hosts
if (meta.bubbleInstances.length > 0) { if (meta.bubbleInstances.length > 0) {
const pattern = buildPatterns(meta.bubbleInstances); const patterns = buildPatterns(meta.bubbleInstances);
await queryRunner.query(`UPDATE "instance" SET "isBubbled" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ${pattern}`); await queryRunner.query(`UPDATE "instance" SET "isBubbled" = true WHERE ((lower(reverse("host")) || '.')::text) LIKE ANY ($1)`, [ patterns ]);
} }
} }
} }
@ -78,12 +78,8 @@ export class AddInstanceBlockColumns1748105111513 {
/** /**
* @param {string[]} input * @param {string[]} input
* @returns {string} * @returns {string[]}
*/ */
function buildPatterns(input) { function buildPatterns(input) {
const strings = input return input.map(i => i.toLowerCase().split('').reverse().join('') + '.%');
.map(i => i.toLowerCase().split('').reverse().join('') + '.%')
.map(i => `'${i}'`)
.join(', ');
return `(array[${strings}]::text[])`;
} }