"use strict"; import { decode_payload } from './DecodePayload.mjs'; import { get_id_number } from '../Helpers/IdGenerator.mjs'; class MessageHandler { constructor({ ReadingRepo, GatewayRepo }) { this.repo_reading = ReadingRepo; this.repo_gateway = GatewayRepo; } async handle(message) { console.log(message); let decoded_payload = decode_payload(message.payload_raw); console.log(decoded_payload); let rssis = []; for(let gw in message.metadata.gateways) { // Insert the gateway info into the database if it doesn't exist already if(!this.repo_gateway.exists(gw.gtw_id)) { this.repo_gateway.add({ id: gw.gtw_id, latitude: gw.latitude, longitude: gw.longitude, altitude: gw.altitude }); } // Generate an RSSI object rssis.push({ id: get_id_number, gateway_id: this.repo_gateway, rssi: gw.rssi, snr: gw.snr, channel: gw.channel }); } // Add the reading and the associated RSSIs to the database this.repo_reading.add({ id: decoded_payload.id, latitude: decoded_payload.latitude, longitude: decoded_payload.longitude, data_rate: message.metadata.data_rate, code_rate: message.metadata.coding_rate, rssis }); } } export default MessageHandler;