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