video-media.prisma 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. model VideoMedia {
  2. /// Mongo ObjectId stored in `_id`
  3. id String @id @map("_id") @db.ObjectId
  4. srcId Int @default(0)
  5. title String @default("")
  6. checkSum String @default("")
  7. type String @default("")
  8. formatType Int @default(0)
  9. contentType Int @default(0)
  10. coverType Int @default(0)
  11. coverImg String @default("")
  12. coverImgNew String @default("")
  13. /// Duration in seconds
  14. videoTime Int @default(0)
  15. publish String @default("")
  16. country String @default("")
  17. firstTag String @default("")
  18. secondTags String[] @default([])
  19. mediaSet String? @default("") // null allowed for legacy data
  20. preFileName String @default("")
  21. status String @default("")
  22. desc String @default("")
  23. /// File size can exceed 32-bit, but default still 0
  24. size BigInt @default(0)
  25. bango String @default("")
  26. actors String[] @default([]) // allow null for old data, default []
  27. studio String @default("")
  28. addedTime DateTime
  29. createdAt DateTime
  30. updatedAt DateTime
  31. appids Int[] @default([])
  32. japanNames String[] @default([])
  33. filename String @default("")
  34. fieldNameFs String @default("")
  35. ext String @default("")
  36. taskId String @default("")
  37. width Int @default(0)
  38. height Int @default(0)
  39. ratio Float @default(0)
  40. frameRate String @default("")
  41. syBitRate String @default("")
  42. vidBitRate String @default("")
  43. proxyUpload Int @default(0)
  44. isAdd Boolean @default(false)
  45. retry Int @default(0)
  46. notifySignal Boolean @default(false)
  47. mergeRetry Int @default(0)
  48. compressRetry Int @default(0)
  49. segmentRetry Int @default(0)
  50. linodeRetry Int @default(0)
  51. failReason String @default("")
  52. deleteDisk Boolean @default(false)
  53. infoTsName String @default("")
  54. // all above fields are from provider, keep original, avoid updating,
  55. // use below fields for local video media controls
  56. categoryId String? @db.ObjectId // 分类 ID (local)
  57. tagIds String[] @default([]) @db.ObjectId // 标签 IDs (local, max 5)
  58. /// Lowercased concatenation of tag names, for search
  59. tagsFlat String @default("")
  60. listStatus Int @default(0) // 上/下架
  61. editedAt BigInt @default(0) // 本地编辑时间 (epoch ms)
  62. // Relations (optional, just for Prisma)
  63. // category Category? @relation(fields: [categoryId], references: [id])
  64. @@map("videoMedia")
  65. // ===== Indexes =====
  66. /// For fuzzy tag search + status filter (app search)
  67. @@index([listStatus, tagsFlat], map: "idx_videoMedia_listStatus_tagsFlat")
  68. /// For mgnt filtering by category
  69. @@index([categoryId], map: "idx_videoMedia_categoryId")
  70. /// For mgnt filtering by tagIds (multi-key index)
  71. @@index([tagIds], map: "idx_videoMedia_tagIds")
  72. /// For common sorting by addedTime (provider ordering)
  73. @@index([addedTime], map: "idx_videoMedia_addedTime")
  74. }