feat(tests): общие тесты с автором, в истории только результаты ученика (для всех ролей)
Made-with: Cursor
This commit is contained in:
+26
@@ -0,0 +1,26 @@
|
||||
-- Общие тесты в контексте пары: studentId = id назначенного ученика; authorId = кто создал.
|
||||
-- Результаты (TestResult) привязаны к ученику (studentId).
|
||||
|
||||
ALTER TABLE "Test" ADD COLUMN "authorId" INTEGER;
|
||||
|
||||
UPDATE "Test" SET "authorId" = "studentId";
|
||||
|
||||
UPDATE "Test" AS t
|
||||
SET "studentId" = ta."studentId"
|
||||
FROM "TutorAssignment" AS ta
|
||||
WHERE t."authorId" = ta."tutorId";
|
||||
|
||||
ALTER TABLE "Test" ALTER COLUMN "authorId" SET NOT NULL;
|
||||
|
||||
ALTER TABLE "Test" ADD CONSTRAINT "Test_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
ALTER TABLE "TestResult" ADD COLUMN "studentId" INTEGER;
|
||||
|
||||
UPDATE "TestResult" AS tr
|
||||
SET "studentId" = t."studentId"
|
||||
FROM "Test" AS t
|
||||
WHERE tr."testId" = t."id";
|
||||
|
||||
ALTER TABLE "TestResult" ALTER COLUMN "studentId" SET NOT NULL;
|
||||
|
||||
ALTER TABLE "TestResult" ADD CONSTRAINT "TestResult_studentId_fkey" FOREIGN KEY ("studentId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@@ -26,7 +26,9 @@ model User {
|
||||
questions Question[]
|
||||
chatMessages ChatMessage[]
|
||||
textbooks Textbook[]
|
||||
tests Test[]
|
||||
testsInScope Test[] @relation("TestStudentScope")
|
||||
testsAuthored Test[] @relation("TestAuthor")
|
||||
testResults TestResult[]
|
||||
reports Report[]
|
||||
hallPhotos HallPhoto[]
|
||||
}
|
||||
@@ -75,8 +77,11 @@ model Textbook {
|
||||
|
||||
model Test {
|
||||
id Int @id @default(autoincrement())
|
||||
/// Контекст пары наставник–ученик (id назначенного ученика); общие тесты для обоих
|
||||
studentId Int
|
||||
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
|
||||
student User @relation("TestStudentScope", fields: [studentId], references: [id], onDelete: Cascade)
|
||||
authorId Int
|
||||
author User @relation("TestAuthor", fields: [authorId], references: [id], onDelete: Cascade)
|
||||
topic String
|
||||
questions String
|
||||
createdAt DateTime @default(now())
|
||||
@@ -86,11 +91,13 @@ model Test {
|
||||
model TestResult {
|
||||
id Int @id @default(autoincrement())
|
||||
testId Int
|
||||
test Test @relation(fields: [testId], references: [id], onDelete: Cascade)
|
||||
studentId Int
|
||||
student User @relation(fields: [studentId], references: [id], onDelete: Cascade)
|
||||
answers String
|
||||
score Int
|
||||
total Int
|
||||
createdAt DateTime @default(now())
|
||||
test Test @relation(fields: [testId], references: [id], onDelete: Cascade)
|
||||
}
|
||||
|
||||
model Report {
|
||||
|
||||
Reference in New Issue
Block a user