From 9bceb14c4a419f106f946d89d168bb4daa0b66e1 Mon Sep 17 00:00:00 2001 From: liamcottle Date: Thu, 14 Mar 2024 01:02:00 +1300 Subject: [PATCH] dont save duplicate device metrics received in the last 15 seconds --- src/mqtt.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/mqtt.js b/src/mqtt.js index f0c48bb..8f14844 100644 --- a/src/mqtt.js +++ b/src/mqtt.js @@ -223,15 +223,34 @@ client.on("message", async (topic, message) => { // create device metric try { - await prisma.deviceMetric.create({ - data: { + + // find an existing metric with duplicate information created in the last 15 seconds + const existingDuplicateDeviceMetric = await prisma.deviceMetric.findFirst({ + where: { node_id: envelope.packet.from, battery_level: data.battery_level, voltage: data.voltage, channel_utilization: data.channel_utilization, air_util_tx: data.air_util_tx, - }, - }); + created_at: { + gte: new Date(Date.now() - 15000), // created in the last 15 seconds + }, + } + }) + + // create metric if no duplicates found + if(!existingDuplicateDeviceMetric){ + await prisma.deviceMetric.create({ + data: { + node_id: envelope.packet.from, + battery_level: data.battery_level, + voltage: data.voltage, + channel_utilization: data.channel_utilization, + air_util_tx: data.air_util_tx, + }, + }); + } + } catch (e) { console.error(e); }