First schema iteration
This commit is contained in:
113
concord-server/schema.prisma
Normal file
113
concord-server/schema.prisma
Normal file
@@ -0,0 +1,113 @@
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
model Hello {
|
||||
id String @id @default(uuid(7))
|
||||
names Thing[]
|
||||
}
|
||||
|
||||
model Thing {
|
||||
id BigInt @id @default(autoincrement())
|
||||
txt String
|
||||
Hello Hello? @relation(fields: [helloId], references: [id])
|
||||
helloId String?
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
@@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?
|
||||
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])
|
||||
}
|
||||
Reference in New Issue
Block a user