eleboog-astro/prisma/schema.prisma

133 lines
3.2 KiB
Text

generator client {
provider = "prisma-client-js"
output = "../node_modules/.prisma/client"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}
// COMMENTS STUFF
model Comment {
id Int @id @default(autoincrement())
authorId String
author User @relation("Author", fields: [authorId], references: [id], onDelete: Cascade)
date DateTime
dateUpdated DateTime?
contents String
like_count Int
likes Likes[] @relation("Likes")
pinned Boolean
parentId Int
parent Comment @relation("Replies", fields: [parentId], references: [id], onDelete: Cascade)
replies Comment[] @relation("Replies")
@@map("comment")
}
model Likes {
commentId Int
comment Comment @relation("Likes", fields: [commentId], references: [id], onDelete: Cascade)
userId String
user User @relation("Likes", fields: [userId], references: [id], onDelete: Cascade)
@@id([commentId, userId])
@@map("likes")
}
// AUTH STUFF
model User {
id String @id
name String
email String
emailVerified Boolean
image String?
createdAt DateTime
updatedAt DateTime
username String?
displayUsername String?
role String?
banned Boolean?
banReason String?
banExpires DateTime?
sessions Session[]
accounts Account[]
passkeys Passkey[]
comments Comment[] @relation("Author")
likes Likes[] @relation("Likes")
@@unique([email])
@@unique([username])
@@map("user")
}
model Session {
id String @id
expiresAt DateTime
token String
createdAt DateTime
updatedAt DateTime
ipAddress String?
userAgent String?
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
impersonatedBy String?
@@unique([token])
@@map("session")
}
model Account {
id String @id
accountId String
providerId String
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
accessToken String?
refreshToken String?
idToken String?
accessTokenExpiresAt DateTime?
refreshTokenExpiresAt DateTime?
scope String?
password String?
createdAt DateTime
updatedAt DateTime
@@map("account")
}
model Verification {
id String @id
identifier String
value String
expiresAt DateTime
createdAt DateTime?
updatedAt DateTime?
@@map("verification")
}
model Passkey {
id String @id
name String?
publicKey String
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
credentialID String
counter Int
deviceType String
backedUp Boolean
transports String?
createdAt DateTime?
@@map("passkey")
}