fix(backend): fix ApPersonService unsound type cast (#15629)
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
export class UserFeaturedFixup1741424411879 {
|
||||
name = 'UserFeaturedFixup1741424411879'
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`CREATE OR REPLACE FUNCTION pg_temp.extract_ap_id(text) RETURNS text AS $$
|
||||
SELECT
|
||||
CASE
|
||||
WHEN $1 ~ '^https?://' THEN $1
|
||||
WHEN $1 LIKE '{%' THEN COALESCE(jsonb_extract_path_text($1::jsonb, 'id'), null)
|
||||
ELSE null
|
||||
END;
|
||||
$$ LANGUAGE sql IMMUTABLE;`);
|
||||
|
||||
// "host" is NOT NULL is not needed but just in case add it to prevent overwriting irreplaceable data
|
||||
await queryRunner.query(`UPDATE "user" SET "featured" = pg_temp.extract_ap_id("featured") WHERE "host" IS NOT NULL`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
// fixup migration, no down migration
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user