billing.prisma 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. model SubscriptionPlan {
  2. id String @id @default(cuid())
  3. name String
  4. stripePriceId String? @unique
  5. price Float @default(0)
  6. interval String @default("month") // "month" | "year"
  7. maxMembers Int @default(1)
  8. features String? // JSON feature flags
  9. isActive Boolean @default(true)
  10. createdAt DateTime @default(now())
  11. updatedAt DateTime @updatedAt
  12. subscriptions Subscription[]
  13. @@map("subscription_plans")
  14. }
  15. model Subscription {
  16. id String @id @default(cuid())
  17. status String @default("active") // active | canceled | past_due | trialing
  18. stripeSubscriptionId String? @unique
  19. stripeCustomerId String?
  20. currentPeriodStart DateTime?
  21. currentPeriodEnd DateTime?
  22. cancelAtPeriodEnd Boolean @default(false)
  23. createdAt DateTime @default(now())
  24. updatedAt DateTime @updatedAt
  25. organizationId String @unique
  26. organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
  27. planId String
  28. plan SubscriptionPlan @relation(fields: [planId], references: [id])
  29. @@map("subscriptions")
  30. }