Fix profile display backfill startup

This commit is contained in:
richjohnrambo
2026-09-04 16:20:28 +08:00
parent 7fb1ea70bc
commit 50ccdf5f89
3 changed files with 8 additions and 6 deletions
+1 -1
View File
@@ -140,7 +140,7 @@ func profileSeedFromPublic(public any) (nickname, avatarFileID string) {
break break
} }
} }
for _, key := range []string{"avatar_file_id", "photo", "avatar"} { for _, key := range []string{"avatar_file_id"} {
if value := strings.TrimSpace(fmt.Sprint(values[key])); value != "" && value != "<nil>" { if value := strings.TrimSpace(fmt.Sprint(values[key])); value != "" && value != "<nil>" {
avatarFileID = value avatarFileID = value
break break
+1 -3
View File
@@ -434,9 +434,7 @@ func backfillProfileDisplay(ctx context.Context, conn *sqlx.Conn, usersScoped bo
NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.name')), '') NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.name')), '')
)` )`
avatarExpr := `COALESCE( avatarExpr := `COALESCE(
NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.avatar_file_id')), ''), NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.avatar_file_id')), '')
NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.photo')), ''),
NULLIF(JSON_UNQUOTE(JSON_EXTRACT(u.public,'$.avatar')), '')
)` )`
if usersScoped { if usersScoped {
if _, err = conn.ExecContext(ctx, `INSERT IGNORE INTO im_user_profiles(id,tenant_id,user_id,nickname,avatar_file_id,public_account) if _, err = conn.ExecContext(ctx, `INSERT IGNORE INTO im_user_profiles(id,tenant_id,user_id,nickname,avatar_file_id,public_account)
+6 -2
View File
@@ -64,10 +64,14 @@ func TestProfilePublicFromFields(t *testing.T) {
func TestProfileSeedFromPublic(t *testing.T) { func TestProfileSeedFromPublic(t *testing.T) {
nickname, avatar := profileSeedFromPublic(map[string]any{ nickname, avatar := profileSeedFromPublic(map[string]any{
"fn": "旧昵称", "fn": "旧昵称",
"photo": "file_avatar_1", "avatar_file_id": "file_avatar_1",
}) })
if nickname != "旧昵称" || avatar != "file_avatar_1" { if nickname != "旧昵称" || avatar != "file_avatar_1" {
t.Fatalf("unexpected profile seed nickname=%q avatar=%q", nickname, avatar) t.Fatalf("unexpected profile seed nickname=%q avatar=%q", nickname, avatar)
} }
_, avatar = profileSeedFromPublic(map[string]any{"photo": "https://example.com/avatar.png"})
if avatar != "" {
t.Fatalf("photo URL must not be treated as avatar_file_id: %q", avatar)
}
} }