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

datasource db {
  provider = "mysql"
}

model Download {
  id          String    @id @default(cuid())
  uuid        String    @unique @default(uuid())
  url         String    @db.Text
  status      Status    @default(PENDING)
  format      String
  quality     String
  subtitles   Boolean   @default(false)
  extraArgs   String?   @db.Text

  filePath    String?   @db.Text
  fileName    String?
  fileSize    BigInt?
  errorMsg    String?   @db.Text

  ipAddress   String
  submittedAt DateTime  @default(now())
  startedAt   DateTime?
  completedAt DateTime?
  deletedAt   DateTime?

  tokens      DownloadToken[]
}

model DownloadToken {
  id         String    @id @default(cuid())
  download   Download  @relation(fields: [downloadId], references: [id])
  downloadId String
  token      String    @unique @default(uuid())
  expiresAt  DateTime
  usedAt     DateTime?
  createdAt  DateTime  @default(now())
}

enum Status {
  PENDING
  PROCESSING
  DONE
  FAILED
  FILE_DELETED
}
