larsen/prisma/schema.prisma

81 lines
1.7 KiB
Text
Raw Normal View History

2023-11-19 13:15:37 +00:00
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[]
2023-11-20 15:08:30 +00:00
@@index([username])
2023-11-19 13:15:37 +00:00
}
// 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
2023-11-19 22:19:19 +00:00
producer User @relation(fields: [producerId], references: [id], onDelete: Cascade)
2023-11-19 13:15:37 +00:00
producerId String
2023-11-19 22:19:19 +00:00
versions TrackVersion[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
2023-11-19 13:15:37 +00:00
}
model TrackVersion {
id Int @id @default(autoincrement())
2023-11-19 22:19:19 +00:00
track Track @relation(fields: [trackId], references: [id], onDelete: Cascade)
trackId Int
2023-11-19 22:19:19 +00:00
comments Comment[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
2023-11-19 13:15:37 +00:00
}
model Comment {
id Int @id @default(autoincrement())
content String
2023-11-19 22:19:19 +00:00
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
authorId String
2023-11-19 22:19:19 +00:00
2023-11-19 13:15:37 +00:00
trackVersion TrackVersion @relation(fields: [trackVersionId], references: [id], onDelete: Cascade)
trackVersionId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
2023-11-19 13:15:37 +00:00
}