Files
autoteacher/prisma/schema.prisma

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])
}