108 lines
2.6 KiB
TypeScript
108 lines
2.6 KiB
TypeScript
import { PrismaClient } from '@typebot.io/prisma'
|
|
import { promptAndSetEnvironment } from './utils'
|
|
import { isCancel, text, confirm } from '@clack/prompts'
|
|
|
|
const inspectUser = async () => {
|
|
await promptAndSetEnvironment('production')
|
|
const email = await text({
|
|
message: 'User email',
|
|
})
|
|
|
|
if (!email || isCancel(email)) process.exit()
|
|
|
|
const prisma = new PrismaClient()
|
|
|
|
const user = await prisma.user.findFirst({
|
|
where: {
|
|
email,
|
|
},
|
|
select: {
|
|
name: true,
|
|
createdAt: true,
|
|
lastActivityAt: true,
|
|
company: true,
|
|
onboardingCategories: true,
|
|
workspaces: {
|
|
where: {
|
|
role: 'ADMIN',
|
|
},
|
|
select: {
|
|
workspace: {
|
|
select: {
|
|
id: true,
|
|
name: true,
|
|
plan: true,
|
|
isVerified: true,
|
|
stripeId: true,
|
|
isSuspended: true,
|
|
members: {
|
|
select: {
|
|
role: true,
|
|
user: {
|
|
select: {
|
|
email: true,
|
|
},
|
|
},
|
|
},
|
|
where: {
|
|
user: { email: { not: email } },
|
|
},
|
|
},
|
|
additionalStorageIndex: true,
|
|
typebots: {
|
|
orderBy: {
|
|
updatedAt: 'desc',
|
|
},
|
|
select: {
|
|
id: true,
|
|
name: true,
|
|
createdAt: true,
|
|
updatedAt: true,
|
|
riskLevel: true,
|
|
publishedTypebot: {
|
|
select: {
|
|
typebot: {
|
|
select: { publicId: true },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
console.log(JSON.stringify(user, null, 2))
|
|
|
|
const computeResults = await confirm({
|
|
message: 'Compute collected results?',
|
|
})
|
|
|
|
if (!computeResults || isCancel(computeResults)) process.exit()
|
|
|
|
console.log('Computing collected results...')
|
|
|
|
for (const workspace of user?.workspaces ?? []) {
|
|
for (const typebot of workspace.workspace.typebots) {
|
|
const resultsCount = await prisma.result.count({
|
|
where: {
|
|
typebotId: typebot.id,
|
|
isArchived: false,
|
|
hasStarted: true,
|
|
},
|
|
})
|
|
|
|
if (resultsCount === 0) continue
|
|
|
|
console.log(
|
|
`Typebot "${typebot.name}" (${typebot.id}) has ${resultsCount} collected results`
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
inspectUser()
|