diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-10-17 10:25:53 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-10-17 10:25:53 +0200 |
| commit | e89ac9cec5dbde327c408b6e0f35e5c17f358e3d (patch) | |
| tree | d5eec1b066badcd02775c1255d9e4dbddfde5eec /src | |
| parent | 198bbebd89d212faae3e45a22830bab66dec49e0 (diff) | |
| download | bycs-sol-e89ac9cec5dbde327c408b6e0f35e5c17f358e3d.tar.gz bycs-sol-e89ac9cec5dbde327c408b6e0f35e5c17f358e3d.zip | |
admin-tools: add method to delete duplicatesdelete-duplicates
Diffstat (limited to 'src')
| -rw-r--r-- | src/admin-tools.js | 31 |
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); } |
