82 lines
2.2 KiB
JavaScript
Executable File
82 lines
2.2 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Script to update a user's name (for superuser/admin use)
|
|
* Usage: node scripts/update-user-name.js <userId> <newName>
|
|
*/
|
|
|
|
const { PrismaClient } = require('@prisma/client');
|
|
const { PrismaPg } = require('@prisma/adapter-pg');
|
|
|
|
// Load environment variables from .env file
|
|
require('dotenv').config();
|
|
|
|
// Create PrismaClient with PostgreSQL adapter (matching src/lib/prisma.ts)
|
|
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL });
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
async function updateUserName(userId, newName) {
|
|
if (!userId || !newName) {
|
|
console.error('Usage: node scripts/update-user-name.js <userId> <newName>');
|
|
console.error('Example: node scripts/update-user-name.js "user-123" "John Doe"');
|
|
process.exit(1);
|
|
}
|
|
|
|
try {
|
|
// Check if user exists
|
|
const user = await prisma.user.findUnique({
|
|
where: { id: userId },
|
|
include: { player: true },
|
|
});
|
|
|
|
if (!user) {
|
|
console.error(`❌ User with ID "${userId}" not found`);
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log(`Found user: ${user.name} (${user.email})`);
|
|
|
|
// Update user name
|
|
const updatedUser = await prisma.user.update({
|
|
where: { id: userId },
|
|
data: {
|
|
name: newName,
|
|
...(user.player && {
|
|
player: {
|
|
update: {
|
|
name: newName,
|
|
normalizedName: newName.toLowerCase(),
|
|
},
|
|
},
|
|
}),
|
|
},
|
|
include: { player: true },
|
|
});
|
|
|
|
console.log(`✅ Successfully updated user name to "${newName}"`);
|
|
console.log(` User ID: ${updatedUser.id}`);
|
|
console.log(` Email: ${updatedUser.email}`);
|
|
console.log(` New Name: ${updatedUser.name}`);
|
|
|
|
if (updatedUser.player) {
|
|
console.log(` Player Name: ${updatedUser.player.name}`);
|
|
}
|
|
|
|
return updatedUser;
|
|
} catch (error) {
|
|
console.error('❌ Error updating user name:', error.message);
|
|
process.exit(1);
|
|
} finally {
|
|
await prisma.$disconnect();
|
|
}
|
|
}
|
|
|
|
// Run if called directly
|
|
if (require.main === module) {
|
|
const userId = process.argv[2];
|
|
const newName = process.argv[3];
|
|
updateUserName(userId, newName);
|
|
}
|
|
|
|
module.exports = { updateUserName };
|