fix(lms): support direct R2 map uploads and preserve empty course groups
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
ALTER TABLE "student_groups" ADD COLUMN "course_id" UUID;
|
||||
CREATE INDEX "student_groups_course_id_idx" ON "student_groups"("course_id");
|
||||
ALTER TABLE "student_groups" ADD CONSTRAINT "student_groups_course_id_fkey"
|
||||
FOREIGN KEY ("course_id") REFERENCES "courses"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- Preserve only unambiguous historical course associations. Empty groups without
|
||||
-- curriculum history cannot be attributed to an instructor safely.
|
||||
WITH candidates AS (
|
||||
SELECT "group_id", "course_id" FROM "instructor_curriculum_settings" WHERE "group_id" IS NOT NULL
|
||||
UNION
|
||||
SELECT m."group_id", e."course_id"
|
||||
FROM "student_group_members" m
|
||||
JOIN "student_enrollments" e ON e."user_id" = m."user_id" AND e."status" = 'ACTIVE'
|
||||
), unique_courses AS (
|
||||
SELECT "group_id", MIN("course_id"::text)::uuid AS "course_id"
|
||||
FROM candidates GROUP BY "group_id" HAVING COUNT(DISTINCT "course_id") = 1
|
||||
)
|
||||
UPDATE "student_groups" g SET "course_id" = c."course_id"
|
||||
FROM unique_courses c WHERE g."id" = c."group_id";
|
||||
@@ -65,6 +65,8 @@ model StudentEnrollment {
|
||||
|
||||
model StudentGroup {
|
||||
id String @id @default(uuid()) @db.Uuid
|
||||
courseId String? @map("course_id") @db.Uuid
|
||||
course Course? @relation(fields: [courseId], references: [id], onDelete: Restrict)
|
||||
organizationId String? @map("organization_id") @db.Uuid
|
||||
organizationName String @map("organization_name")
|
||||
name String
|
||||
@@ -84,6 +86,7 @@ model StudentGroup {
|
||||
teamCustomModules TeamCustomModule[]
|
||||
|
||||
@@unique([organizationName, name])
|
||||
@@index([courseId])
|
||||
@@index([organizationId])
|
||||
@@index([organizationName])
|
||||
@@index([instructorPlatformId])
|
||||
@@ -168,6 +171,7 @@ model Course {
|
||||
customModules StudentCustomModule[]
|
||||
teamCustomModules TeamCustomModule[]
|
||||
submissionScores SubmissionScore[]
|
||||
studentGroups StudentGroup[]
|
||||
submissionTotalScores SubmissionTotalScore[]
|
||||
|
||||
@@index([isActive])
|
||||
|
||||
Reference in New Issue
Block a user