larsen/prisma/schema.prisma
2023-11-19 17:19:19 -05:00

70 lines
1.5 KiB
Text

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[]
}
// 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[]
}
model TrackVersion {
id Int @id @default(autoincrement())
track Track @relation(fields: [trackId], references: [id], onDelete: Cascade)
trackId Int
comments Comment[]
}
model Comment {
id Int @id @default(autoincrement())
content String
author User @relation(fields: [authorId], references: [id])
authorId String
trackVersion TrackVersion @relation(fields: [trackVersionId], references: [id], onDelete: Cascade)
trackVersionId Int
}