| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // This is your Prisma schema file,
- // learn more about it in the docs: https://pris.ly/d/prisma-schema
- generator client {
- provider = "prisma-client-js"
- }
- datasource db {
- provider = "postgresql"
- url = env("DATABASE_URL")
- }
- model User {
- id String @id @default(cuid())
- email String @unique
- name String
- password String
- avatarUrl String?
- role Role @default(REVIEWER)
- active Boolean @default(true)
- createdAt DateTime @default(now())
- updatedAt DateTime @updatedAt
- memberships ProjectMember[]
- comments Comment[]
- projects Project[]
- }
- model Project {
- id String @id @default(cuid())
- name String
- description String?
- ownerId String
- createdAt DateTime @default(now())
- updatedAt DateTime @updatedAt
- assets Asset[]
- members ProjectMember[]
- owner User @relation(fields: [ownerId], references: [id])
- }
- model ProjectMember {
- id String @id @default(cuid())
- userId String
- projectId String
- role Role @default(REVIEWER)
- isOwner Boolean @default(false)
- joinedAt DateTime @default(now())
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
- @@unique([userId, projectId])
- @@index([projectId])
- @@index([userId])
- }
- model Asset {
- id String @id @default(cuid())
- projectId String
- title String
- filename String
- filePath String
- thumbnail String?
- hlsPath String?
- duration Float?
- fps Float @default(30)
- mimeType String
- status AssetStatus @default(PENDING_REVIEW)
- createdAt DateTime @default(now())
- updatedAt DateTime @updatedAt
- project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
- comments Comment[]
- }
- model Comment {
- id String @id @default(cuid())
- assetId String
- userId String
- content String
- timestamp Float?
- annotation Json?
- resolved Boolean @default(false)
- parentId String?
- createdAt DateTime @default(now())
- updatedAt DateTime @updatedAt
- asset Asset @relation(fields: [assetId], references: [id], onDelete: Cascade)
- user User @relation(fields: [userId], references: [id], onDelete: Cascade)
- parent Comment? @relation("Replies", fields: [parentId], references: [id], onDelete: Cascade)
- replies Comment[] @relation("Replies")
- }
- enum Role {
- ADMIN
- EDITOR
- REVIEWER
- VIEWER
- }
- enum AssetStatus {
- PENDING_REVIEW
- CHANGES_REQUESTED
- APPROVED
- REJECTED
- }
|