Files
Epicure/packages/db/src/seed.ts
T
Arnaud c8f4b50ef3 rename: "Team" billing tier to "Family"
All literal "team" tier-value references renamed to "family" across
API routes, admin UI, OpenAPI schemas, and lib/tiers.ts. The DB enum
value itself is renamed in place via ALTER TYPE ... RENAME VALUE
(migration 0044) rather than drizzle-kit's auto-generated
drop-and-recreate-the-enum migration, which would have failed against
any existing row still holding 'team' — RENAME VALUE preserves
existing data with no cast/backfill needed.

Also adds STRIPE_PLAN.md — a full Stripe billing integration plan
(Checkout+Portal, tier→Price mapping, admin billing dashboard, and a
multi-user Family-group design since Family is meant to cover several
accounts under one subscription, not one payer). Planning only, no
Stripe code yet.

v0.47.0
2026-07-18 00:25:51 +02:00

43 lines
975 B
TypeScript

import { db } from "./client";
import { tierDefinitions } from "./schema";
async function seed() {
console.log("Seeding tier definitions...");
await db
.insert(tierDefinitions)
.values([
{
tier: "free",
maxRecipes: 50,
aiCallsPerMonth: 10,
storageMb: 500,
maxPublicRecipes: 5,
},
{
tier: "pro",
maxRecipes: 99999,
aiCallsPerMonth: 500,
storageMb: 10000,
maxPublicRecipes: 99999,
},
{
tier: "family",
// -1 is the actual "no cap" sentinel (see lib/tiers.ts UNLIMITED) —
// pro uses large-but-finite numbers instead; family is genuinely unlimited.
maxRecipes: -1,
aiCallsPerMonth: 2000,
storageMb: 50000,
maxPublicRecipes: -1,
},
])
.onConflictDoNothing();
console.log("Seed complete.");
process.exit(0);
}
seed().catch((err) => {
console.error(err);
process.exit(1);
});