aboutsummaryrefslogtreecommitdiff
path: root/src/admin-tools.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/admin-tools.js')
-rw-r--r--src/admin-tools.js31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/admin-tools.js b/src/admin-tools.js
index b3135b1..858ec6d 100644
--- a/src/admin-tools.js
+++ b/src/admin-tools.js
@@ -111,6 +111,36 @@ async function findAllDuplicates() {
}
}
+async function deleteAllDuplicates() {
+ output("loading courses ...");
+ const courses = await fetchCourses("SOL Graduierung");
+ output(`searching in ${courses.length} courses ... `);
+ const promises = [];
+ for (const course of courses) {
+ promises.push(findDuplicates(course));
+ }
+
+ const allDuplicates = await Promise.all(promises);
+
+ const deletePromises = [];
+ for (const [course, courseDuplicates] of allDuplicates) {
+ const toDelete = [];
+ for (const duplicates of courseDuplicates) {
+ for (let i = duplicates.length - 1; i > 0; i--) {
+ toDelete.push(duplicates[i].changeId);
+ }
+ }
+ output(`${course.title}: Deleting ${toDelete}`);
+ deletePromises.push(
+ (async function () {
+ const dbActivity = await course.getActivity("Graduation");
+ const db = new DB(dbActivity.id);
+ await db.deleteEntries(toDelete);
+ })(),
+ );
+ }
+}
+
async function exportGraduations(course) {
const dbActivity = await course.getActivity("Graduation");
const db = new DB(dbActivity.id);
@@ -151,6 +181,7 @@ async function init() {
output(JSON.stringify(students.map((s) => s.id)));
});
document.getElementById("find-duplicates").addEventListener("click", findAllDuplicates);
+ document.getElementById("delete-duplicates").addEventListener("click", deleteAllDuplicates);
document.getElementById("export-graduation-dbs").addEventListener("click", exportAllGraduations);
}