From a3242c905528c00195d76fdac3b302424a0b009f Mon Sep 17 00:00:00 2001 From: liamcottle Date: Wed, 21 Aug 2024 00:46:23 +1200 Subject: [PATCH] implement purging neighbour infos --- src/mqtt.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/mqtt.js b/src/mqtt.js index d547a6f..173e838 100644 --- a/src/mqtt.js +++ b/src/mqtt.js @@ -98,6 +98,11 @@ const optionsList = [ type: Number, description: "Map reports older than this many seconds will be purged from the database.", }, + { + name: "purge-neighbour-infos-after-seconds", + type: Number, + description: "Neighbour infos older than this many seconds will be purged from the database.", + }, { name: "purge-nodes-unheard-for-seconds", type: Number, @@ -163,6 +168,7 @@ const purgeNodesUnheardForSeconds = options["purge-nodes-unheard-for-seconds"] ? const purgeDeviceMetricsAfterSeconds = options["purge-device-metrics-after-seconds"] ?? null; const purgeEnvironmentMetricsAfterSeconds = options["purge-environment-metrics-after-seconds"] ?? null; const purgeMapReportsAfterSeconds = options["purge-map-reports-after-seconds"] ?? null; +const purgeNeighbourInfosAfterSeconds = options["purge-neighbour-infos-after-seconds"] ?? null; const purgePowerMetricsAfterSeconds = options["purge-power-metrics-after-seconds"] ?? null; const purgePositionsAfterSeconds = options["purge-positions-after-seconds"] ?? null; const purgeTextMessagesAfterSeconds = options["purge-text-messages-after-seconds"] ?? null; @@ -196,6 +202,7 @@ if(purgeIntervalSeconds){ await purgeOldDeviceMetrics(); await purgeOldEnvironmentMetrics(); await purgeOldMapReports(); + await purgeOldNeighbourInfos(); await purgeOldPowerMetrics(); await purgeOldPositions(); await purgeOldTextMessages(); @@ -308,6 +315,32 @@ async function purgeOldMapReports() { } +/** + * Purges all neighbour infos from the database that are older than the configured timeframe. + */ +async function purgeOldNeighbourInfos() { + + // make sure seconds provided + if(!purgeNeighbourInfosAfterSeconds){ + return; + } + + // delete all neighbour infos that are older than the configured purge time + try { + await prisma.neighbourInfo.deleteMany({ + where: { + created_at: { + // created before x seconds ago + lt: new Date(Date.now() - purgeNeighbourInfosAfterSeconds * 1000), + }, + } + }); + } catch(e) { + // do nothing + } + +} + /** * Purges all power metrics from the database that are older than the configured timeframe. */