Персональный образовательный ресурс для Константина на Deepseek API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

114 lines
2.9 KiB

generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "linux-musl-openssl-3.0.x", "linux-musl-arm64-openssl-3.0.x"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum Role {
TUTOR
STUDENT
}
model User {
id Int @id @default(autoincrement())
username String @unique
passwordHash String
role Role
displayName String?
tutoringAssignments TutorAssignment[] @relation("TutorInAssignment")
studentAssignment TutorAssignment? @relation("StudentInAssignment")
questions Question[]
chatMessages ChatMessage[]
textbooks Textbook[]
tests Test[]
reports Report[]
hallPhotos HallPhoto[]
}
model TutorAssignment {
tutorId Int
studentId Int @unique
tutor User @relation("TutorInAssignment", fields: [tutorId], references: [id], onDelete: Cascade)
student User @relation("StudentInAssignment", fields: [studentId], references: [id], onDelete: Cascade)
@@id([tutorId, studentId])
}
model Setting {
key String @id
value String
}
model ChatMessage {
id Int @id @default(autoincrement())
studentId Int
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
role String
content String
createdAt DateTime @default(now())
}
model Question {
id Int @id @default(autoincrement())
studentId Int
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
text String
answer String?
date String
createdAt DateTime @default(now())
}
model Textbook {
id Int @id @default(autoincrement())
studentId Int
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
topic String
content String
createdAt DateTime @default(now())
}
model Test {
id Int @id @default(autoincrement())
studentId Int
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
topic String
questions String
createdAt DateTime @default(now())
results TestResult[]
}
model TestResult {
id Int @id @default(autoincrement())
testId Int
answers String
score Int
total Int
createdAt DateTime @default(now())
test Test @relation(fields: [testId], references: [id], onDelete: Cascade)
}
model Report {
id Int @id @default(autoincrement())
studentId Int
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
date String
content String
createdAt DateTime @default(now())
}
model HallPhoto {
id Int @id @default(autoincrement())
studentId Int
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
date String
fileName String
originalName String @default("")
mimeType String
createdAt DateTime @default(now())
}