datasource db {
    provider = "postgresql"
    url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model User {
    id        Int        @id @default(autoincrement())
    pubkey    String     @unique
    username  String?    @unique
    purchased Purchase[]
    role      Role?      @relation(fields: [roleId], references: [id])
    roleId    Int?
    createdAt DateTime   @default(now())
    updatedAt DateTime   @updatedAt
}

model Role {
    id    Int    @id @default(autoincrement())
    subscribed  Boolean @default(false)
    users User[]
}

model Purchase {
    id          Int       @id @default(autoincrement())
    user        User      @relation(fields: [userId], references: [id])
    userId      Int
    course      Course?   @relation(fields: [courseId], references: [id])
    courseId    Int?
    resource    Resource? @relation(fields: [resourceId], references: [id])
    resourceId  Int?
    amountPaid  Int       // in satoshis
    createdAt   DateTime  @default(now())
    updatedAt   DateTime  @updatedAt
}


model Course {
    id          Int        @id @default(autoincrement())
    title       String
    description String
    image       String
    isFree      Boolean    @default(false)
    resources   Resource[]
    purchases   Purchase[]
    noteId      String?    @unique
    createdAt   DateTime   @default(now())
    updatedAt   DateTime   @updatedAt
}

model Resource {
    id        Int        @id @default(autoincrement())
    title     String
    content   String     // Markdown content
    image     String?
    course    Course?    @relation(fields: [courseId], references: [id])
    courseId  Int?
    purchases Purchase[]
    noteId    String?    @unique
    createdAt DateTime   @default(now())
    updatedAt DateTime   @updatedAt
}