implement purging map reports

This commit is contained in:
liamcottle
2024-08-21 00:29:05 +12:00
parent e109a24ebf
commit 32d8019d61

View File

@ -93,6 +93,11 @@ const optionsList = [
type: Number, type: Number,
description: "Power Metrics older than this many seconds will be purged from the database.", description: "Power Metrics older than this many seconds will be purged from the database.",
}, },
{
name: "purge-map-reports-after-seconds",
type: Number,
description: "Map reports older than this many seconds will be purged from the database.",
},
{ {
name: "purge-nodes-unheard-for-seconds", name: "purge-nodes-unheard-for-seconds",
type: Number, type: Number,
@ -147,6 +152,7 @@ const purgeIntervalSeconds = options["purge-interval-seconds"] ?? 10;
const purgeNodesUnheardForSeconds = options["purge-nodes-unheard-for-seconds"] ?? null; const purgeNodesUnheardForSeconds = options["purge-nodes-unheard-for-seconds"] ?? null;
const purgeDeviceMetricsAfterSeconds = options["purge-device-metrics-after-seconds"] ?? null; const purgeDeviceMetricsAfterSeconds = options["purge-device-metrics-after-seconds"] ?? null;
const purgeEnvironmentMetricsAfterSeconds = options["purge-environment-metrics-after-seconds"] ?? null; const purgeEnvironmentMetricsAfterSeconds = options["purge-environment-metrics-after-seconds"] ?? null;
const purgeMapReportsAfterSeconds = options["purge-map-reports-after-seconds"] ?? null;
const purgePowerMetricsAfterSeconds = options["purge-power-metrics-after-seconds"] ?? null; const purgePowerMetricsAfterSeconds = options["purge-power-metrics-after-seconds"] ?? null;
const purgePositionsAfterSeconds = options["purge-positions-after-seconds"] ?? null; const purgePositionsAfterSeconds = options["purge-positions-after-seconds"] ?? null;
const purgeTextMessagesAfterSeconds = options["purge-text-messages-after-seconds"] ?? null; const purgeTextMessagesAfterSeconds = options["purge-text-messages-after-seconds"] ?? null;
@ -177,6 +183,7 @@ if(purgeIntervalSeconds){
await purgeUnheardNodes(); await purgeUnheardNodes();
await purgeOldDeviceMetrics(); await purgeOldDeviceMetrics();
await purgeOldEnvironmentMetrics(); await purgeOldEnvironmentMetrics();
await purgeOldMapReports();
await purgeOldPowerMetrics(); await purgeOldPowerMetrics();
await purgeOldPositions(); await purgeOldPositions();
await purgeOldTextMessages(); await purgeOldTextMessages();
@ -261,6 +268,32 @@ async function purgeOldEnvironmentMetrics() {
} }
/**
* Purges all power metrics from the database that are older than the configured timeframe.
*/
async function purgeOldMapReports() {
// make sure seconds provided
if(!purgeMapReportsAfterSeconds){
return;
}
// delete all map reports that are older than the configured purge time
try {
await prisma.mapReport.deleteMany({
where: {
created_at: {
// created before x seconds ago
lt: new Date(Date.now() - purgeMapReportsAfterSeconds * 1000),
},
}
});
} catch(e) {
// do nothing
}
}
/** /**
* Purges all power metrics from the database that are older than the configured timeframe. * Purges all power metrics from the database that are older than the configured timeframe.
*/ */