aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-10-17 10:25:53 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-10-17 10:25:53 +0200
commite89ac9cec5dbde327c408b6e0f35e5c17f358e3d (patch)
treed5eec1b066badcd02775c1255d9e4dbddfde5eec /src
parent198bbebd89d212faae3e45a22830bab66dec49e0 (diff)
downloadbycs-sol-delete-duplicates.tar.gz
bycs-sol-delete-duplicates.zip
admin-tools: add method to delete duplicatesdelete-duplicates
Diffstat (limited to 'src')
-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);
}