diff options
| -rw-r--r-- | admin-tools.html | 1 | ||||
| -rw-r--r-- | src/admin-tools.js | 31 |
2 files changed, 32 insertions, 0 deletions
diff --git a/admin-tools.html b/admin-tools.html index 7f3b3bc..fc118e0 100644 --- a/admin-tools.html +++ b/admin-tools.html @@ -27,6 +27,7 @@ </div> <button id="print-ids">StudentIds</button> <button id="find-duplicates">Finde Duplikate</button> + <button id="delete-duplicates">Lösche Duplikate</button> <button id="export-graduation-dbs">Exportiere Graduation Dbs</button> </body> </html> 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); } |
