diff --git a/src/scans/deleteScansBasedOnCriteria.js b/src/scans/deleteScansBasedOnCriteria.js new file mode 100644 index 0000000..b59bd85 --- /dev/null +++ b/src/scans/deleteScansBasedOnCriteria.js @@ -0,0 +1,36 @@ +import { RunnerService, ScanService } from "@odit/lfk-client-node"; +import { login } from "../shared/login.js"; + +const teamID = 42; // Replace with the actual team ID or -1 for all teams +const orgID = -1; // Replace with the actual organization ID or -1 for all organizations +const distanceMeter = 6600; + +await login(); + +const runners = await RunnerService.runnerControllerGetAll(); +console.log(`Loaded ${runners.length} runners.`); +let filteredRunners = []; + +if (teamID !== -1) { + filteredRunners = runners.filter((r) => r.group.id == teamID); +} else if (orgID !== -1) { + filteredRunners = runners.filter((r) => r.group.id == orgID || r.group.parentGroup?.id == orgID); +} else { + filteredRunners = runners +} +console.log(`Filtered to ${filteredRunners.length} runners.`); + +const scans = await ScanService.scanControllerGetAll(); +console.log(`Loaded ${scans.length} scans.`); +let deletescans = []; +for (const runner of filteredRunners) { + deletescans = deletescans.concat(scans.filter((s) => s.runner.id == runner.id && s.distance == distanceMeter)); +} +console.log(`Found ${deletescans.length} scans to delete for ${filteredRunners.length} runners.`); + +const deletePromises = []; +for (const scan of deletescans) { + deletePromises.push(ScanService.scanControllerRemove(scan.id)); +} +await Promise.all(scans); +console.log(`Deleted ${deletescans.length} scans.`); \ No newline at end of file