generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id @unique username String @unique tracks Track[] comments Comment[] auth_session Session[] key Key[] @@index([username]) } // Auth Stuff model Session { id String @id @unique user_id String active_expires BigInt idle_expires BigInt user User @relation(references: [id], fields: [user_id], onDelete: Cascade) @@index([user_id]) } model Key { id String @id @unique hashed_password String? user_id String user User @relation(references: [id], fields: [user_id], onDelete: Cascade) @@index([user_id]) } // Application stuff model Track { id Int @id @default(autoincrement()) title String objectKey String producer User @relation(fields: [producerId], references: [id], onDelete: Cascade) producerId String versions TrackVersion[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([producerId]) } model TrackVersion { id Int @id @default(autoincrement()) track Track @relation(fields: [trackId], references: [id], onDelete: Cascade) trackId Int comments Comment[] createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([trackId]) } model Comment { id Int @id @default(autoincrement()) content String author User @relation(fields: [authorId], references: [id], onDelete: Cascade) authorId String trackVersion TrackVersion @relation(fields: [trackVersionId], references: [id], onDelete: Cascade) trackVersionId Int createdAt DateTime @default(now()) updatedAt DateTime @updatedAt @@index([authorId, trackVersionId]) }