From f160e2f255016347e2d002fa710f3ccce657fd81 Mon Sep 17 00:00:00 2001 From: Pritimay Sarkar Date: Tue, 19 Sep 2023 18:03:41 +0530 Subject: [PATCH] kit alert function --- cloud-functions/nodejs/functions/index.js | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/cloud-functions/nodejs/functions/index.js b/cloud-functions/nodejs/functions/index.js index a44da35..8e96a73 100644 --- a/cloud-functions/nodejs/functions/index.js +++ b/cloud-functions/nodejs/functions/index.js @@ -118,3 +118,42 @@ exports.reportDownload = functions.region("asia-south1").https.onRequest(async ( } }); +/** + * Triggered by a change to a Firestore document. + * + * @param {!Object} event Event payload. + * @param {!Object} context Metadata for the event. + */ + +// const functions = require("firebase-functions"); +// const admin = require("firebase-admin"); + +// admin.initializeApp(); + +exports.kitAlert = async (event, context) => { + const resource = context.resource; + // log out the resource string that triggered the function + console.log('Function triggered by change to: ' + resource); + // now log the full event object + console.log(JSON.stringify(event)); + const { kitSerial, classificationResult } = event.value.fields; + console.log('kitSerial', kitSerial); + console.log('classificationResult', classificationResult); + if (classificationResult?.stringValue?.includes("Trait")) { + const currentKitTests = await admin.firestore().collection("testData").where("kitSerial", "==", kitSerial.stringValue).get(); + const traitCount = 0; + console.log(currentKitTests); + currentKitTests.forEach((x) => { + if (x.classificationResult?.includes("Trait")) { + traitCount++; + } + }); + if (traitCount > 2) { + await admin.firestore().collection("alerts").add({ + name: 'Kit Alert', + traitCount: traitCount, + message: `${kitSerial.stringValue} has ${traitCount} traits` + }); + } + } +};