2023-10-07 23:19:53 -07:00
|
|
|
generator client {
|
|
|
|
provider = "prisma-client-js"
|
|
|
|
}
|
|
|
|
|
|
|
|
datasource db {
|
2023-11-12 21:15:07 -08:00
|
|
|
provider = "mysql"
|
|
|
|
url = env("DATABASE_URL")
|
2023-10-07 23:19:53 -07:00
|
|
|
relationMode = "prisma"
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model Profile {
|
2023-10-07 23:19:53 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
userId String @unique
|
|
|
|
name String
|
|
|
|
imageUrl String @db.Text
|
|
|
|
email String @db.Text
|
|
|
|
|
|
|
|
servers Server[]
|
|
|
|
members Member[]
|
|
|
|
channels Channel[]
|
|
|
|
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model Server {
|
2023-10-07 23:19:53 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
name String
|
|
|
|
imageUrl String @db.Text
|
2023-10-14 00:04:30 -07:00
|
|
|
inviteCode String @unique
|
2023-10-07 23:19:53 -07:00
|
|
|
|
|
|
|
profileId String
|
|
|
|
profile Profile @relation(fields: [profileId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
members Member[]
|
|
|
|
channels Channel[]
|
|
|
|
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
|
|
@@index([profileId])
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
enum MemberRole {
|
2023-10-07 23:19:53 -07:00
|
|
|
ADMIN
|
|
|
|
MODERATOR
|
|
|
|
GUEST
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model Member {
|
2023-10-07 23:19:53 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
role MemberRole @default(GUEST)
|
|
|
|
|
|
|
|
profileId String
|
|
|
|
profile Profile @relation(fields: [profileId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
serverId String
|
|
|
|
server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)
|
|
|
|
|
2023-10-20 22:44:49 -07:00
|
|
|
messages Message[]
|
|
|
|
directMessages DirectMessage[]
|
|
|
|
|
|
|
|
conversationsInitiated Conversation[] @relation("MemberOne")
|
|
|
|
conversationsReceived Conversation[] @relation("MemberTwo")
|
|
|
|
|
2023-10-07 23:19:53 -07:00
|
|
|
createdAt DateTime @default(now())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
|
|
@@index([profileId])
|
|
|
|
@@index([serverId])
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
enum ChannelType {
|
2023-10-07 23:19:53 -07:00
|
|
|
TEXT
|
|
|
|
AUDIO
|
|
|
|
VIDEO
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model Channel {
|
2023-10-07 23:19:53 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
name String
|
|
|
|
type ChannelType @default(TEXT)
|
|
|
|
|
|
|
|
profileId String
|
|
|
|
profile Profile @relation(fields: [profileId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
serverId String
|
|
|
|
server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)
|
|
|
|
|
2023-10-20 22:44:49 -07:00
|
|
|
messages Message[]
|
|
|
|
|
2023-10-07 23:19:53 -07:00
|
|
|
createdAt DateTime @default(now())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
|
|
@@index([profileId])
|
|
|
|
@@index([serverId])
|
2023-10-20 22:44:49 -07:00
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model Message {
|
2023-10-20 22:44:49 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
content String @db.Text
|
|
|
|
|
|
|
|
fileUrl String? @db.Text
|
|
|
|
|
|
|
|
memberId String
|
|
|
|
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
channelId String
|
|
|
|
channel Channel @relation(fields: [channelId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
deleted Boolean @default(false)
|
|
|
|
|
|
|
|
createdAt DateTime @default(now())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
|
|
@@index([channelId])
|
|
|
|
@@index([memberId])
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model Conversation {
|
2023-10-20 22:44:49 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
|
|
|
|
memberOneId String
|
2023-11-12 17:31:24 -08:00
|
|
|
memberOne Member @relation("MemberOne", fields: [memberOneId], references: [id], onDelete: Cascade)
|
2023-10-20 22:44:49 -07:00
|
|
|
|
|
|
|
memberTwoId String
|
2023-11-12 17:31:24 -08:00
|
|
|
memberTwo Member @relation("MemberTwo", fields: [memberTwoId], references: [id], onDelete: Cascade)
|
2023-10-20 22:44:49 -07:00
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
directMessages DirectMessage[]
|
2023-10-20 22:44:49 -07:00
|
|
|
|
|
|
|
@@index([memberTwoId])
|
|
|
|
|
|
|
|
@@unique([memberOneId, memberTwoId])
|
|
|
|
}
|
|
|
|
|
2023-11-12 21:15:07 -08:00
|
|
|
model DirectMessage {
|
2023-10-20 22:44:49 -07:00
|
|
|
id String @id @default(uuid())
|
|
|
|
content String @db.Text
|
|
|
|
fileUrl String? @db.Text
|
|
|
|
|
|
|
|
memberId String
|
|
|
|
member Member @relation(fields: [memberId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
conversationId String
|
|
|
|
conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
|
|
|
|
|
|
|
|
deleted Boolean @default(false)
|
2023-11-12 21:15:07 -08:00
|
|
|
|
2023-10-20 22:44:49 -07:00
|
|
|
createdAt DateTime @default(now())
|
|
|
|
updatedAt DateTime @updatedAt
|
|
|
|
|
|
|
|
@@index([memberId])
|
|
|
|
@@index([conversationId])
|
2023-11-12 21:15:07 -08:00
|
|
|
}
|