fix(backend): fix ApPersonService unsound type cast (#15629)
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
This commit is contained in:
parent
ac07bb8d92
commit
a710af54ed
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
### Server
|
### Server
|
||||||
- Fix: DBマイグレーション際にシステムアカウントのユーザーID判定が正しくない問題を修正
|
- Fix: DBマイグレーション際にシステムアカウントのユーザーID判定が正しくない問題を修正
|
||||||
|
- Fix: user.featured列が状況によってJSON文字列になっていたのを修正
|
||||||
|
|
||||||
|
|
||||||
## 2025.3.0
|
## 2025.3.0
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
@ -560,7 +560,7 @@ export class ApPersonService implements OnModuleInit {
|
|||||||
inbox: person.inbox,
|
inbox: person.inbox,
|
||||||
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
|
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
|
||||||
followersUri: person.followers ? getApId(person.followers) : undefined,
|
followersUri: person.followers ? getApId(person.followers) : undefined,
|
||||||
featured: person.featured,
|
featured: person.featured ? getApId(person.featured) : undefined,
|
||||||
emojis: emojiNames,
|
emojis: emojiNames,
|
||||||
name: truncate(person.name, nameLength),
|
name: truncate(person.name, nameLength),
|
||||||
tags,
|
tags,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user