PRAGMA defer_foreign_keys=ON; PRAGMA foreign_keys=OFF; -- CreateTable CREATE TABLE "MaterialGroup" ( "id" TEXT NOT NULL PRIMARY KEY, "classId" TEXT NOT NULL, "name" TEXT NOT NULL, "type" TEXT NOT NULL, "sortOrder" INTEGER NOT NULL DEFAULT 0, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "MaterialGroup_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); -- RedefineTables CREATE TABLE "new_Deck" ( "id" TEXT NOT NULL PRIMARY KEY, "classId" TEXT NOT NULL, "name" TEXT NOT NULL, "description" TEXT, "sortOrder" INTEGER NOT NULL DEFAULT 0, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "groupId" TEXT, CONSTRAINT "Deck_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "Deck_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "MaterialGroup" ("id") ON DELETE SET NULL ON UPDATE CASCADE ); INSERT INTO "new_Deck" ("classId", "createdAt", "description", "id", "name", "sortOrder") SELECT "classId", "createdAt", "description", "id", "name", "sortOrder" FROM "Deck"; DROP TABLE "Deck"; ALTER TABLE "new_Deck" RENAME TO "Deck"; CREATE TABLE "new_QuizSet" ( "id" TEXT NOT NULL PRIMARY KEY, "classId" TEXT NOT NULL, "name" TEXT NOT NULL, "description" TEXT, "sortOrder" INTEGER NOT NULL DEFAULT 0, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, "groupId" TEXT, CONSTRAINT "QuizSet_classId_fkey" FOREIGN KEY ("classId") REFERENCES "Class" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "QuizSet_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "MaterialGroup" ("id") ON DELETE SET NULL ON UPDATE CASCADE ); INSERT INTO "new_QuizSet" ("classId", "createdAt", "description", "id", "name", "sortOrder") SELECT "classId", "createdAt", "description", "id", "name", "sortOrder" FROM "QuizSet"; DROP TABLE "QuizSet"; ALTER TABLE "new_QuizSet" RENAME TO "QuizSet"; CREATE TABLE "new_ShareLink" ( "id" TEXT NOT NULL PRIMARY KEY, "targetType" TEXT NOT NULL, "deckId" TEXT, "quizSetId" TEXT, "groupId" TEXT, "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "ShareLink_deckId_fkey" FOREIGN KEY ("deckId") REFERENCES "Deck" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "ShareLink_quizSetId_fkey" FOREIGN KEY ("quizSetId") REFERENCES "QuizSet" ("id") ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT "ShareLink_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "MaterialGroup" ("id") ON DELETE CASCADE ON UPDATE CASCADE ); INSERT INTO "new_ShareLink" ("createdAt", "deckId", "id", "quizSetId", "targetType") SELECT "createdAt", "deckId", "id", "quizSetId", "targetType" FROM "ShareLink"; DROP TABLE "ShareLink"; ALTER TABLE "new_ShareLink" RENAME TO "ShareLink"; CREATE UNIQUE INDEX "ShareLink_deckId_key" ON "ShareLink"("deckId"); CREATE UNIQUE INDEX "ShareLink_quizSetId_key" ON "ShareLink"("quizSetId"); CREATE UNIQUE INDEX "ShareLink_groupId_key" ON "ShareLink"("groupId"); PRAGMA foreign_keys=ON; PRAGMA defer_foreign_keys=OFF;