90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
generator client {
|
|
provider = "prisma-client-js"
|
|
output = "../src/generated/prisma"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
|
|
model Course {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
description String?
|
|
classes Class[]
|
|
assignments Assignment[]
|
|
teacherId String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([teacherId, name])
|
|
@@index([teacherId])
|
|
}
|
|
|
|
model Class {
|
|
id Int @id @default(autoincrement())
|
|
name String
|
|
description String?
|
|
courseId Int
|
|
teacherId String
|
|
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
|
|
assignments Assignment[]
|
|
students ClassStudent[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([courseId, name])
|
|
@@index([teacherId])
|
|
}
|
|
|
|
model Assignment {
|
|
id Int @id @default(autoincrement())
|
|
title String
|
|
description String?
|
|
courseId Int
|
|
classroomId Int
|
|
formSchema Json?
|
|
teacherId String
|
|
gradingCriteria String?
|
|
autoEvaluate Boolean @default(false)
|
|
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
|
|
classroom Class @relation(fields: [classroomId], references: [id], onDelete: Cascade)
|
|
submissions Submission[]
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
|
|
@@unique([classroomId, title])
|
|
@@index([teacherId])
|
|
}
|
|
|
|
model Submission {
|
|
id Int @id @default(autoincrement())
|
|
assignmentId Int
|
|
studentId String
|
|
studentName String @default("")
|
|
originalFilename String
|
|
fileUrl String
|
|
fileKey String?
|
|
submittedAt DateTime @default(now())
|
|
formPayload Json?
|
|
evaluationScore Float?
|
|
evaluationComment String?
|
|
evaluatedAt DateTime?
|
|
assignment Assignment @relation(fields: [assignmentId], references: [id], onDelete: Cascade)
|
|
|
|
@@unique([assignmentId, studentId])
|
|
}
|
|
|
|
model ClassStudent {
|
|
id Int @id @default(autoincrement())
|
|
classroomId Int
|
|
studentId String
|
|
studentName String
|
|
createdAt DateTime @default(now())
|
|
updatedAt DateTime @updatedAt
|
|
classroom Class @relation(fields: [classroomId], references: [id], onDelete: Cascade)
|
|
|
|
@@unique([classroomId, studentId])
|
|
}
|