59 lines
1.3 KiB
TypeScript
59 lines
1.3 KiB
TypeScript
import { PrismaClient } from '@typebot.io/prisma'
|
|
import { promptAndSetEnvironment } from './utils'
|
|
import { text, isCancel, confirm } from '@clack/prompts'
|
|
import { destroyUser } from './helpers/destroyUser'
|
|
|
|
const updateUserEmail = async () => {
|
|
await promptAndSetEnvironment('production')
|
|
|
|
const prisma = new PrismaClient()
|
|
|
|
const currentUserEmail = await text({
|
|
message: 'Current email?',
|
|
})
|
|
|
|
const newEmail = await text({
|
|
message: 'New email?',
|
|
})
|
|
|
|
if (
|
|
!currentUserEmail ||
|
|
!newEmail ||
|
|
isCancel(currentUserEmail) ||
|
|
isCancel(newEmail)
|
|
)
|
|
throw new Error('Invalid emails')
|
|
|
|
const existingUserWithNewEmail = await prisma.user.findUnique({
|
|
where: {
|
|
email: newEmail,
|
|
},
|
|
})
|
|
|
|
if (existingUserWithNewEmail) {
|
|
console.log(`User with email ${newEmail} already exists`)
|
|
console.log(JSON.stringify(existingUserWithNewEmail, null, 2))
|
|
|
|
const isDestroying = await confirm({
|
|
message: 'Would you like to destroy it and update the current user?',
|
|
})
|
|
|
|
if (!isDestroying || isCancel(isDestroying)) return
|
|
|
|
await destroyUser(newEmail)
|
|
}
|
|
|
|
const user = await prisma.user.update({
|
|
where: {
|
|
email: currentUserEmail,
|
|
},
|
|
data: {
|
|
email: newEmail,
|
|
},
|
|
})
|
|
|
|
console.log(JSON.stringify(user, null, 2))
|
|
}
|
|
|
|
updateUserEmail()
|