39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
// Seed the Plan catalog (admin-tunable mirror of lib/billing/plans.ts).
|
|
// Run: npm run db:seed
|
|
import "dotenv/config";
|
|
import type { Prisma } from "@prisma/client";
|
|
import { prisma } from "@/lib/db";
|
|
import { PLANS, PLAN_ORDER } from "@/lib/billing/plans";
|
|
|
|
async function main() {
|
|
for (const key of PLAN_ORDER) {
|
|
const plan = PLANS[key];
|
|
await prisma.plan.upsert({
|
|
where: { key },
|
|
create: {
|
|
key,
|
|
name: plan.name,
|
|
priceMonthly: plan.priceMonthly,
|
|
priceYearly: plan.priceYearly,
|
|
limits: plan.limits as unknown as Prisma.InputJsonValue,
|
|
features: plan.features as unknown as Prisma.InputJsonValue,
|
|
},
|
|
update: {
|
|
name: plan.name,
|
|
priceMonthly: plan.priceMonthly,
|
|
priceYearly: plan.priceYearly,
|
|
limits: plan.limits as unknown as Prisma.InputJsonValue,
|
|
features: plan.features as unknown as Prisma.InputJsonValue,
|
|
},
|
|
});
|
|
console.log(`✓ Seeded plan: ${plan.name}`);
|
|
}
|
|
}
|
|
|
|
main()
|
|
.catch((err) => {
|
|
console.error("Seed failed:", err.message ?? err);
|
|
process.exit(1);
|
|
})
|
|
.finally(() => prisma.$disconnect());
|