2025-09-27 02:44:50 -04:00
|
|
|
generator client {
|
2025-09-27 04:52:32 -04:00
|
|
|
provider = "prisma-zod-generator"
|
2025-09-27 02:44:50 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
datasource db {
|
|
|
|
|
provider = "postgresql"
|
|
|
|
|
url = env("DATABASE_URL")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model Instance {
|
|
|
|
|
id String @id @default(uuid(7))
|
|
|
|
|
name String
|
|
|
|
|
icon String?
|
|
|
|
|
Role Role[]
|
|
|
|
|
Category Category[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model User {
|
|
|
|
|
id String @id @default(uuid(7))
|
|
|
|
|
username String
|
|
|
|
|
nickname String?
|
|
|
|
|
bio String?
|
|
|
|
|
picture String?
|
|
|
|
|
banner String?
|
|
|
|
|
admin Boolean
|
|
|
|
|
status String // online/offline/dnd/idle/invis
|
|
|
|
|
Role Role[]
|
|
|
|
|
UserAuth UserAuth?
|
|
|
|
|
Message Message[]
|
|
|
|
|
MessagePing MessagePing[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model Role {
|
2025-09-27 12:26:24 -04:00
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
|
userId String
|
|
|
|
|
Instance Instance @relation(fields: [instanceId], references: [id])
|
|
|
|
|
instanceId String
|
|
|
|
|
type String
|
2025-09-27 02:44:50 -04:00
|
|
|
|
|
|
|
|
@@unique([userId, instanceId])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model UserAuth {
|
|
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
|
userId String
|
|
|
|
|
password String // HASHED PASSWORD AS STRING USING SHA-256
|
|
|
|
|
token String? // current user token
|
|
|
|
|
|
|
|
|
|
@@unique([userId])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model Category {
|
|
|
|
|
id String @id @default(uuid(7))
|
|
|
|
|
Instance Instance? @relation(fields: [instanceId], references: [id])
|
|
|
|
|
instanceId String?
|
|
|
|
|
name String
|
|
|
|
|
position Int
|
|
|
|
|
Channel Channel[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model Channel {
|
|
|
|
|
id String @id @default(uuid(7))
|
|
|
|
|
type String
|
|
|
|
|
Category Category? @relation(fields: [categoryId], references: [id])
|
|
|
|
|
categoryId String?
|
|
|
|
|
name String
|
|
|
|
|
description String
|
|
|
|
|
Message Message[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model Message {
|
|
|
|
|
id String @id @default(uuid(7))
|
2025-09-27 14:53:15 -04:00
|
|
|
Channel Channel @relation(fields: [channelId], references: [id])
|
|
|
|
|
channelId String
|
|
|
|
|
User User @relation(fields: [userId], references: [id])
|
|
|
|
|
userId String
|
2025-09-27 03:13:33 -04:00
|
|
|
deleted Boolean
|
2025-09-27 02:44:50 -04:00
|
|
|
text String
|
|
|
|
|
replies Reply[] @relation("MessageToReply")
|
|
|
|
|
repliedTo Reply[] @relation("ReplyToMessage")
|
|
|
|
|
MessagePing MessagePing[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model Reply {
|
|
|
|
|
message Message @relation("MessageToReply", fields: [messageId], references: [id])
|
|
|
|
|
messageId String
|
|
|
|
|
repliesTo Message @relation("ReplyToMessage", fields: [repliesToId], references: [id])
|
|
|
|
|
repliesToId String
|
|
|
|
|
|
|
|
|
|
@@unique([messageId, repliesToId])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
model MessagePing {
|
|
|
|
|
Message Message @relation(fields: [messageId], references: [id])
|
|
|
|
|
messageId String
|
|
|
|
|
PingsUser User @relation(fields: [pingsUserId], references: [id])
|
|
|
|
|
pingsUserId String
|
|
|
|
|
|
|
|
|
|
@@unique([messageId, pingsUserId])
|
|
|
|
|
}
|