fix: handle empty playerId string in user edit API

This commit is contained in:
2026-03-31 16:44:26 -07:00
parent 33beed97c3
commit 1f9f708f19
+8 -4
View File
@@ -32,6 +32,10 @@ export async function PUT(
);
}
// Parse playerId - handle empty string case
const parsedPlayerId = playerId ? parseInt(playerId) : undefined;
const isValidPlayerId = parsedPlayerId !== undefined && !isNaN(parsedPlayerId);
// Update the user
const user = await prisma.user.update({
where: { id },
@@ -39,14 +43,14 @@ export async function PUT(
email: email || existingUser.email,
name: name !== undefined ? name : existingUser.name,
role: role || existingUser.role,
playerId: playerId ? parseInt(playerId) : null,
playerId: isValidPlayerId ? parsedPlayerId : null,
},
});
// Update the player's user relation if needed
if (playerId !== undefined) {
// First, remove user from any existing player
if (existingUser.playerId && existingUser.playerId !== parseInt(playerId)) {
if (existingUser.playerId && existingUser.playerId !== parsedPlayerId) {
await prisma.player.update({
where: { id: existingUser.playerId },
data: { user: { disconnect: true } },
@@ -54,9 +58,9 @@ export async function PUT(
}
// Then, connect user to the new player
if (playerId) {
if (isValidPlayerId) {
await prisma.player.update({
where: { id: parseInt(playerId) },
where: { id: parsedPlayerId! },
data: { user: { connect: { id: user.id } } },
});
}