Source: models/core/handlerState.js

/**
 * 
 *  Handles incoming state information and persists them 
 *  at the coredatabase.
 * 
 *  (c) Jens Dinstühler 2020
 * 
 *  Version 1.0.0
 * 
 * 
 */

const EventEmitter = require('events');

class CoreStateHandler extends EventEmitter {
    constructor() {
        super();
    }

    /**
     * Saves new state Information into core database
     * @param {stateInfo} stateInfo 
     */
    persistNewStateInformation(stateInfo) {
        if ((typeof stateInfo != 'undefined') && (typeof stateInfo.radioStatus != 'undefined')) {
            if (typeof stateInfo.radioStatusShort != 'undefined'){
                global.coreDb.run(`INSERT INTO gearStateStore (issi, radioState, radioStatusHumanReadable, radioStatusShort) VALUES (?, ?, ?, ?)`,
                [
                    stateInfo.issi,
                    stateInfo.radioStatus,
                    stateInfo.radioStatusHumanReadable,
                    stateInfo.radioStatusShort
                ],
                function (err) {
                    if (err) {
                        global.plgManager.logger.error('CORE | HANDLERSTATE | Error inserting new state to coredatabase: ' + err.message);
                        console.log('CORE | HANDLERSTATE | Error inserting new state to coredatabase: ' + err.message);
                    } else {
                        global.plgManager.logger.debug(`CORE | HANDLERSTATE | New State Info has been inserted to coredatabase`);                        
                        console.log(`CORE | HANDLERSTATE | New State Info has been inserted to coredatabase`);
                    }
                });
                
            } else {
                global.coreDb.run(`INSERT INTO gearStateStore (issi, radioState, radioStatusHumanReadable) VALUES (?, ?, ?)`,
                [
                    stateInfo.issi,
                    stateInfo.radioStatus,
                    stateInfo.radioStatusHumanReadable
                ],
                function (err) {
                    if (err) {
                        global.plgManager.logger.error('CORE | HANDLERSTATE | Error inserting new state to coredatabase: ' + err.message);
                        console.log('CORE | HANDLERSTATE | Error inserting new state to coredatabase: ' + err.message);
                    } else {
                        global.plgManager.logger.debug(`CORE | HANDLERSTATE | New State Info has been inserted to coredatabase`);                        
                        console.log(`CORE | HANDLERSTATE | New State Info has been inserted to coredatabase`);
                    }
                });
            } 
        } else {
            global.plgManager.logger.error('CORE | HANDLERSTATE | Error persisting state');
        }
    }
}

module.exports = CoreStateHandler;