Skip to content

Commit b71472a

Browse files
committed
Update display name
1 parent 1f72a95 commit b71472a

File tree

2 files changed

+58
-3
lines changed

2 files changed

+58
-3
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
-- +goose Up
2+
-- Drop the index first
3+
DROP INDEX IF EXISTS idx_users_display_name;
4+
5+
-- Temporarily store the computed values
6+
ALTER TABLE users ADD COLUMN display_name_temp VARCHAR(255);
7+
8+
UPDATE users SET display_name_temp =
9+
CASE
10+
WHEN first_name IS NOT NULL AND first_name != ''
11+
AND last_name IS NOT NULL AND last_name != ''
12+
THEN first_name || ' ' || LEFT(last_name, 1) || '.'
13+
ELSE name
14+
END;
15+
16+
-- Drop the generated column
17+
ALTER TABLE users DROP COLUMN display_name;
18+
19+
-- Rename temp to display_name
20+
ALTER TABLE users RENAME COLUMN display_name_temp TO display_name;
21+
22+
-- Recreate the index
23+
CREATE INDEX idx_users_display_name ON users(display_name);
24+
25+
-- +goose Down
26+
DROP INDEX IF EXISTS idx_users_display_name;
27+
ALTER TABLE users DROP COLUMN display_name;
28+
ALTER TABLE users ADD COLUMN display_name VARCHAR(255) GENERATED ALWAYS AS (
29+
CASE
30+
WHEN first_name IS NOT NULL AND first_name != ''
31+
AND last_name IS NOT NULL AND last_name != ''
32+
THEN first_name || ' ' || LEFT(last_name, 1) || '.'
33+
ELSE name
34+
END
35+
) STORED;
36+
CREATE INDEX idx_users_display_name ON users(display_name);

backend/internal/handlers/auth.go

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,12 +256,17 @@ func (h *AuthHandler) findOrCreateUser(ctx context.Context, claims *BrunstadTVCl
256256
displayName = member.DisplayName
257257

258258
// Compute name for backward compatibility
259-
if displayName != "" {
260-
computedName = displayName
261-
} else if firstName != "" && lastName != "" {
259+
if firstName != "" && lastName != "" {
262260
computedName = firstName + " " + lastName
263261
} else if firstName != "" {
264262
computedName = firstName
263+
} else if displayName != "" {
264+
computedName = displayName
265+
}
266+
267+
// Generate display name if API didn't provide one
268+
if displayName == "" {
269+
displayName = generateDisplayName(firstName, lastName, computedName)
265270
}
266271

267272
// Parse birthdate if available
@@ -309,6 +314,11 @@ func (h *AuthHandler) findOrCreateUser(ctx context.Context, claims *BrunstadTVCl
309314
firstName = claims.FirstName
310315
}
311316

317+
// Ensure display name is set (fallback case when API wasn't available)
318+
if displayName == "" {
319+
displayName = generateDisplayName(firstName, lastName, computedName)
320+
}
321+
312322
// Normalize gender to match database constraint (MALE, FEMALE)
313323
gender := normalizeGender(claims.Gender)
314324

@@ -408,3 +418,12 @@ func normalizeGender(gender string) string {
408418
}
409419
return "UNKNOWN"
410420
}
421+
422+
// generateDisplayName creates a display name in the format "FirstName L." if both names are provided,
423+
// otherwise returns the fallback name
424+
func generateDisplayName(firstName, lastName, fallbackName string) string {
425+
if firstName != "" && lastName != "" {
426+
return firstName + " " + string([]rune(lastName)[0]) + "."
427+
}
428+
return fallbackName
429+
}

0 commit comments

Comments
 (0)