Fix family_members API - use tagged template literals
- Remove display_name from query (column doesn't exist in DB) - Use sql template literals instead of unsafe() - Fix settings page to show member.name properly Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
9e9ba17afb
commit
5aa7b7df31
2 changed files with 15 additions and 24 deletions
|
|
@ -11,26 +11,18 @@ export async function GET(request: Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// First check what columns exist
|
// Simple query - no aliases
|
||||||
const columns = await sql.unsafe(
|
const members = await sql`
|
||||||
`SELECT column_name FROM information_schema.columns WHERE table_name = 'family_members'`
|
SELECT fm.id, fm.user_id, fm.role, fm.created_at, u.name, u.email
|
||||||
);
|
|
||||||
console.log("family_members columns:", columns);
|
|
||||||
|
|
||||||
// Try with just user data
|
|
||||||
const members = await sql.unsafe(
|
|
||||||
`SELECT fm.id, fm.user_id as "userId", fm.role, fm.created_at as "createdAt",
|
|
||||||
u.name, u.email
|
|
||||||
FROM family_members fm
|
FROM family_members fm
|
||||||
LEFT JOIN users u ON u.id = fm.user_id
|
LEFT JOIN users u ON u.id = fm.user_id
|
||||||
WHERE fm.family_id = $1
|
WHERE fm.family_id = ${familyId}
|
||||||
ORDER BY fm.created_at`,
|
ORDER BY fm.created_at
|
||||||
[familyId]
|
`;
|
||||||
);
|
|
||||||
console.log("Members query result:", members);
|
|
||||||
return NextResponse.json({ members: members || [] });
|
return NextResponse.json({ members: members || [] });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Members API error:", error);
|
console.error("Members error:", error);
|
||||||
return NextResponse.json({ error: String(error) }, { status: 500 });
|
return NextResponse.json({ error: String(error) }, { status: 500 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -45,7 +37,7 @@ export async function DELETE(request: Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await sql.unsafe(`DELETE FROM family_members WHERE id = $1`, [memberId]);
|
await sql`DELETE FROM family_members WHERE id = ${memberId}`;
|
||||||
return NextResponse.json({ success: true });
|
return NextResponse.json({ success: true });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
|
|
@ -57,16 +49,15 @@ export async function DELETE(request: Request) {
|
||||||
export async function PATCH(request: Request) {
|
export async function PATCH(request: Request) {
|
||||||
try {
|
try {
|
||||||
const body = await request.json();
|
const body = await request.json();
|
||||||
const { memberId, role, displayName } = body;
|
const { memberId, role } = body;
|
||||||
|
|
||||||
if (!memberId) {
|
if (!memberId) {
|
||||||
return NextResponse.json({ error: "Member ID required" }, { status: 400 });
|
return NextResponse.json({ error: "Member ID required" }, { status: 400 });
|
||||||
}
|
}
|
||||||
|
|
||||||
await sql.unsafe(
|
await sql`
|
||||||
`UPDATE family_members SET role = $1, display_name = $2 WHERE id = $3`,
|
UPDATE family_members SET role = ${role || "caregiver"} WHERE id = ${memberId}
|
||||||
[role || "caregiver", displayName, memberId]
|
`;
|
||||||
);
|
|
||||||
|
|
||||||
return NextResponse.json({ success: true });
|
return NextResponse.json({ success: true });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ export default function SettingsPage() {
|
||||||
{members.map((member) => (
|
{members.map((member) => (
|
||||||
<div key={member.id} className="flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded">
|
<div key={member.id} className="flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded">
|
||||||
<div>
|
<div>
|
||||||
<div className="font-medium text-sm">{member.displayName || member.name || member.email}</div>
|
<div className="font-medium text-sm">{member.name || member.email}</div>
|
||||||
<div className="text-xs text-gray-400">{member.email}</div>
|
<div className="text-xs text-gray-400">{member.email}</div>
|
||||||
</div>
|
</div>
|
||||||
<span className={`text-xs px-2 py-1 rounded ${member.role === "admin" ? "bg-rose-100 text-rose-600" : "bg-gray-100 dark:bg-gray-600"}`}>
|
<span className={`text-xs px-2 py-1 rounded ${member.role === "admin" ? "bg-rose-100 text-rose-600" : "bg-gray-100 dark:bg-gray-600"}`}>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue