2
0
Files
bot/packages/scripts/checkSubscriptionsStatus.ts
2023-06-26 11:33:06 +02:00

47 lines
1.2 KiB
TypeScript

import { PrismaClient } from '@typebot.io/prisma'
import { promptAndSetEnvironment } from './utils'
import { Stripe } from 'stripe'
const checkSubscriptionsStatus = async () => {
await promptAndSetEnvironment()
const prisma = new PrismaClient()
const workspacesWithPaidPlan = await prisma.workspace.findMany({
where: {
plan: {
in: ['PRO', 'STARTER', 'CUSTOM'],
},
},
})
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, {
apiVersion: '2022-11-15',
})
let totalActiveSubscriptions = 0
for (const workspace of workspacesWithPaidPlan) {
if (!workspace.stripeId) {
console.log('No stripe ID', workspace.id)
continue
}
const customer = await stripe.customers.retrieve(workspace.stripeId)
const subscription = (
await stripe.subscriptions.list({
customer: customer.id,
})
).data.at(0)
if (!subscription) {
console.log('No subscription', workspace.id)
continue
}
if (subscription.status === 'active') {
totalActiveSubscriptions++
continue
}
console.log(`${workspace.id} - ${workspace.name} - ${subscription.status}`)
}
console.log('Active subscriptions', totalActiveSubscriptions)
}
checkSubscriptionsStatus()