import { prisma } from '@/lib/prisma' export { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants' /** * Offer a trial only to users who never held a real Stripe subscription. * Users with cus_mock / price_mock leftovers from local tests are still eligible * if they never had a non-mock stripeSubscriptionId. */ export async function shouldOfferSubscriptionTrial(userId: string): Promise { const sub = await prisma.subscription.findUnique({ where: { userId }, select: { stripeSubscriptionId: true, tier: true, status: true, trialEndsAt: true, }, }) if (!sub) return true const stripeSubId = sub.stripeSubscriptionId if (stripeSubId && !stripeSubId.startsWith('sub_mock')) { return false } // Already on a paid / trial tier locally without a Stripe id (admin override) if (sub.tier !== 'BASIC' && (sub.status === 'ACTIVE' || sub.status === 'TRIALING')) { return false } return true }