ln/app/server/prisma/schema.prisma
2025-05-17 17:16:26 +03:00

131 lines
2.5 KiB
Text

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
email String @unique @db.VarChar(255)
username String @unique @db.VarChar(255)
password String
refreshToken String? @unique @db.VarChar(255)
isDarkMode Boolean @default(true)
workings Working[]
reviews Review[]
ratings Rating[]
}
model Working {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String @db.VarChar(255)
description String @db.MediumText
progressStatus WorkingProgressStatus @default(inProgress)
type WorkingType
author User @relation(fields: [authorId], references: [id])
authorId String
book Book?
reviews Review[]
ratings Rating[]
}
enum WorkingType {
book
notepad
}
enum WorkingProgressStatus {
inProgress
frozen
complete
}
model Book {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
wordsTotal Int @default(0)
working Working @relation(fields: [workingId], references: [id])
workingId String @unique @db.VarChar(255)
chapters BookChapter[]
}
model BookChapter {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
title String @db.VarChar(255)
foreword String @db.MediumText
footnote String @db.MediumText
book Book @relation(fields: [bookId], references: [id])
bookId String @db.VarChar(255)
reviews Review[]
ratings Rating[]
}
model Review {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
text String @db.MediumText
user User @relation(fields: [userId], references: [id])
userId String @db.VarChar(255)
working Working? @relation(fields: [workingId], references: [id])
workingId String? @db.VarChar(255)
bookChapter BookChapter? @relation(fields: [bookChapterId], references: [id])
bookChapterId String? @db.VarChar(255)
}
enum RatingType {
up
down
}
model Rating {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
type RatingType
user User @relation(fields: [userId], references: [id])
userId String @db.VarChar(255)
working Working? @relation(fields: [workingId], references: [id])
workingId String? @db.VarChar(255)
bookChapter BookChapter? @relation(fields: [bookChapterId], references: [id])
bookChapterId String? @db.VarChar(255)
}