generator client { provider = "prisma-zod-generator" } 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 { User User @relation(fields: [userId], references: [id]) userId String Instance Instance @relation(fields: [instanceId], references: [id]) instanceId String type String @@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[] Message Message[] } 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)) Channel Channel? @relation(fields: [channelId], references: [id]) channelId String? Category Category? @relation(fields: [categoryId], references: [id]) categoryId String? User User? @relation(fields: [userId], references: [id]) userId String? deleted Boolean 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]) }