89 lines
1.7 KiB
Plaintext
89 lines
1.7 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "mysql"
|
|
url = env("DATABASE_URL")
|
|
relationMode = "prisma"
|
|
}
|
|
|
|
model Profile{
|
|
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
|
|
}
|
|
|
|
model Server{
|
|
id String @id @default(uuid())
|
|
name String
|
|
imageUrl String @db.Text
|
|
inviteCode String @db.Text
|
|
|
|
profileId String
|
|
profile Profile @relation(fields: [profileId], references: [id], onDelete: Cascade)
|
|
|
|
members Member[]
|
|
channels Channel[]
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([profileId])
|
|
}
|
|
|
|
enum MemberRole{
|
|
ADMIN
|
|
MODERATOR
|
|
GUEST
|
|
}
|
|
|
|
model Member{
|
|
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)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([profileId])
|
|
@@index([serverId])
|
|
}
|
|
|
|
enum ChannelType{
|
|
TEXT
|
|
AUDIO
|
|
VIDEO
|
|
}
|
|
|
|
model Channel{
|
|
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)
|
|
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@index([profileId])
|
|
@@index([serverId])
|
|
} |