Source: models/geardirectory.js


class geardirectory {
    constructor(alogger) {
        // always initialize all instance properties
        this.logger = alogger;
        this.gearList = [];
        this.loadGearDirectory((success) => {
            this.logger.info('MODELS-GEARDIRECTORY | Loaded gear directory into memory successfully');    
        })
    }

    /**
     * Loads gear directory from database into memory
     * @param {*} callback 
     */
    loadGearDirectory(callback) {
        this.logger.debug('MODELS-GEARDIRECTORY | Reading gear directory into memory');
        let sql = `SELECT * FROM gearDirectory`;

        global.coreDb.all(sql, [], (err, rows) => {
            if (err) {
                this.logger.error('MODELS-GEARDIRECTORY | Error reading gear directory from database: ' + err);
                return callback(false);
            }
            this.gearList = rows;
            return callback(true);
        });
    } 

    findGearTypeFromGearString(gearString) {
        var regex = "([a-zA-Z0-9]*-[a-zA-Z0-9]*-[a-zA-Z0-9]*)+$";
        var found = gearString.match(regex);
        return found;
    }

    getLongNameForGearString(gearString) {
        var gearArray = this.findGearTypeFromGearString(gearString);
        var retVal = '';
        if (gearArray != null) {
            var gearMatch = gearArray[0];
            var gearPartsArray = gearMatch.split('-');
            if (gearPartsArray.length === 3) {
                var gearTypeString = gearPartsArray[1];
                this.gearList.forEach((gear) => {
                    
                    if (parseInt(gear.gearType) === parseInt(gearTypeString)) {
                        retVal = gear.gearDescription;
                        
                    } 
                })
            }
        } 
        return retVal;
    }
    
}

// export the class
module.exports = geardirectory;