Files
documenso/packages/lib/ee/stripe/create-customer.ts
2023-08-30 16:15:13 +10:00

33 lines
841 B
TypeScript

import { prisma } from '@documenso/prisma';
import { User } from '@documenso/prisma/client';
import { stripe } from '../../server-only/stripe';
import { getSubscriptionByUserId } from '../../server-only/subscription/get-subscription-by-user-id';
export type CreateCustomerOptions = {
user: User;
};
export const createCustomer = async ({ user }: CreateCustomerOptions) => {
const existingSubscription = await getSubscriptionByUserId({ userId: user.id });
if (existingSubscription) {
throw new Error('User already has a subscription');
}
const customer = await stripe.customers.create({
name: user.name ?? undefined,
email: user.email,
metadata: {
userId: user.id,
},
});
return await prisma.subscription.create({
data: {
userId: user.id,
customerId: customer.id,
},
});
};