Advertisement
TomaszKula

Prisma

Nov 3rd, 2023
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // This is your Prisma schema file,
  2. // learn more about it in the docs: https://pris.ly/d/prisma-schema
  3.  
  4. generator client {
  5.   provider = "prisma-client-js"
  6. }
  7.  
  8. datasource db {
  9.   provider = "postgresql"
  10.   url      = env("DATABASE_URL")
  11. }
  12.  
  13. model User {
  14.   id                             String @id @unique
  15.   name                           String
  16.   email                          String @unique
  17.   // subscriptions Subscription[]
  18. }
  19.  
  20. enum SUBSCRIPTION_CURRENCY {
  21.   PLN
  22.   USD
  23.   EUR
  24. }
  25.  
  26.  
  27. enum SUBSCRIPTION_BILLING_PERIOD {
  28.   MONTHLY
  29.   QUARTERLY
  30.   YEARLY
  31. }
  32.  
  33. enum SUBSCRIPTION_STATUS {
  34.   ACTIVE
  35.   NOT_ACTIVE
  36.   // CANCELLED
  37.   // EXPIRED
  38. }
  39.  
  40. model Subscription {
  41.   id                              String                    @id @default(uuid())
  42.   name                            String
  43.   price                           Float
  44.   currency                        SUBSCRIPTION_CURRENCY // Tworzymy enum z walutami.
  45.   startDate                       DateTime
  46.   endDate                         DateTime? // Opcjonalne
  47.   billingPeriod                   SUBSCRIPTION_BILLING_PERIOD // Tworzymy enum z okresem rozliczeniowym.
  48.   next_payment_date               DateTime
  49.   category                        String
  50.   avatar_url                      String
  51.   status                          SUBSCRIPTION_STATUS // Tworzymy enum ze statusem.
  52.  
  53.   ownerId  String
  54.   owner    User      @relation(fields: [ownerId], references: [id], onDelete: Cascade)
  55.   payments Payment[]
  56. }
  57.  
  58. enum PAYMENT_STATUS {
  59.   PAID
  60.   NOT_PAID
  61. }
  62.  
  63. model Payment {
  64.   id                              String                    @id @default(uuid())
  65.   amount                          Float
  66.   due_date                        DateTime                  @db.Date
  67.   status                          PAYMENT_STATUS @default(NOT_PAID)
  68.  
  69.   subscriptionId                  String
  70.   subscription                    Subscription              @relation(fields: [subscriptionId], references: [id], onDelete: Cascade)
  71.  
  72. }
  73.  
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement