yet-another-blog/prisma/schema.prisma

88 lines
1.6 KiB
Plaintext
Raw Normal View History

// 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(UNLISTED)
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 {
PRIVATE
UNLISTED
PUBLISHED
}