diff --git a/src/mqtt.js b/src/mqtt.js index 173e838..0d6cee2 100644 --- a/src/mqtt.js +++ b/src/mqtt.js @@ -113,6 +113,11 @@ const optionsList = [ type: Number, description: "Positions older than this many seconds will be purged from the database.", }, + { + name: "purge-service-envelopes-after-seconds", + type: Number, + description: "Service envelopes older than this many seconds will be purged from the database.", + }, { name: "purge-text-messages-after-seconds", type: Number, @@ -171,6 +176,7 @@ const purgeMapReportsAfterSeconds = options["purge-map-reports-after-seconds"] ? 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 purgeServiceEnvelopesAfterSeconds = options["purge-service-envelopes-after-seconds"] ?? null; const purgeTextMessagesAfterSeconds = options["purge-text-messages-after-seconds"] ?? null; const purgeTraceroutesAfterSeconds = options["purge-traceroutes-after-seconds"] ?? null; const purgeWaypointsAfterSeconds = options["purge-waypoints-after-seconds"] ?? null; @@ -205,6 +211,7 @@ if(purgeIntervalSeconds){ await purgeOldNeighbourInfos(); await purgeOldPowerMetrics(); await purgeOldPositions(); + await purgeOldServiceEnvelopes(); await purgeOldTextMessages(); await purgeOldTraceroutes(); await purgeOldWaypoints(); @@ -393,6 +400,32 @@ async function purgeOldPositions() { } +/** + * Purges all service envelopes from the database that are older than the configured timeframe. + */ +async function purgeOldServiceEnvelopes() { + + // make sure seconds provided + if(!purgeServiceEnvelopesAfterSeconds){ + return; + } + + // delete all service envelopes that are older than the configured purge time + try { + await prisma.serviceEnvelope.deleteMany({ + where: { + created_at: { + // created before x seconds ago + lt: new Date(Date.now() - purgeServiceEnvelopesAfterSeconds * 1000), + }, + } + }); + } catch(e) { + // do nothing + } + +} + /** * Purges all text messages from the database that are older than the configured timeframe. */