fix: forum user lookup handles duplicate display names
When multiple profiles share a display_name (Michael Carter, Alex Rivera, etc.), .maybeSingle() blew up with PGRST116, returning 404. Switched to ordered limit(1) so the earliest-created profile wins and the route resolves deterministically.
This commit is contained in:
@@ -25,6 +25,9 @@ export async function GET(
|
|||||||
// 1) Profile — accept EITHER username OR display_name (URL-encoded).
|
// 1) Profile — accept EITHER username OR display_name (URL-encoded).
|
||||||
// forum_threads/forum_replies store author_name = display_name,
|
// forum_threads/forum_replies store author_name = display_name,
|
||||||
// so the link in the UI uses the display name; we resolve it here.
|
// so the link in the UI uses the display name; we resolve it here.
|
||||||
|
// Multiple profiles can share a display_name (Michael Carter, Alex Rivera,
|
||||||
|
// etc.) — pick the earliest-created profile deterministically rather than
|
||||||
|
// erroring out with maybeSingle().
|
||||||
const decoded = decodeURIComponent(username);
|
const decoded = decodeURIComponent(username);
|
||||||
let { data: profile } = await sb
|
let { data: profile } = await sb
|
||||||
.from("forum_user_profiles")
|
.from("forum_user_profiles")
|
||||||
@@ -36,8 +39,9 @@ export async function GET(
|
|||||||
.from("forum_user_profiles")
|
.from("forum_user_profiles")
|
||||||
.select("*")
|
.select("*")
|
||||||
.eq("display_name", decoded)
|
.eq("display_name", decoded)
|
||||||
.maybeSingle();
|
.order("created_at", { ascending: true })
|
||||||
profile = r2.data;
|
.limit(1);
|
||||||
|
profile = (r2.data && r2.data[0]) || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
|
|||||||
Reference in New Issue
Block a user