89 lines
1.6 KiB
Plaintext
89 lines
1.6 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id String @id @unique @default(uuid())
|
|
username String @unique
|
|
password String
|
|
display_name String?
|
|
|
|
role Role @default(USER)
|
|
|
|
blog_posts Post[]
|
|
profile_page ProfilePage?
|
|
|
|
@@index([username, role])
|
|
}
|
|
|
|
model Post {
|
|
id String @id @unique @default(uuid())
|
|
title String?
|
|
description String?
|
|
content String?
|
|
media String[]
|
|
visibility PostStatus @default(DRAFT)
|
|
owner User? @relation(fields: [ownerid], references: [id], onDelete: Cascade)
|
|
ownerid String?
|
|
|
|
// Tags
|
|
tags Tag[]
|
|
|
|
// Dates
|
|
publish_date DateTime?
|
|
created_date DateTime @default(now())
|
|
}
|
|
|
|
model ProfilePage {
|
|
id String @id @unique @default(uuid())
|
|
content String?
|
|
media String[]
|
|
visibility PostStatus @default(UNLISTED)
|
|
owner User @relation(fields: [ownerid], references: [id], onDelete: Cascade)
|
|
ownerid String @unique
|
|
created_date DateTime @default(now())
|
|
}
|
|
|
|
model Setting {
|
|
id String @unique
|
|
value Json
|
|
}
|
|
|
|
model Group {
|
|
id String @unique
|
|
permissions String[]
|
|
}
|
|
|
|
model Tag {
|
|
id String @id @unique @default(uuid())
|
|
name String @unique
|
|
type TagMode @default(NORMAL)
|
|
posts Post[]
|
|
}
|
|
|
|
enum TagMode {
|
|
NORMAL
|
|
ALIAS
|
|
}
|
|
|
|
enum Role {
|
|
LOCKED
|
|
USER
|
|
ADMIN
|
|
}
|
|
|
|
enum PostStatus {
|
|
DRAFT
|
|
PRIVATE
|
|
UNLISTED
|
|
PUBLISHED
|
|
}
|