const config = require ('../config/config'); var ObjectID = require ('mongodb').ObjectID; var db = null; module.exports = { initModule: function (databaseObject) { db = databaseObject; db.collection ('intent_list'); }, loadTokens: function () { db .collection ('token_list') .findOne () .then (tokens => { if (tokens !== null) { config.TOKEN = tokens.access_token; config.REFRESH_TOKEN = tokens.refresh_token; config.TOKEN_EXPIRES_IN = tokens.expires_in; } else { //Cannot continue without tokens console.log ('Cannot continue without tokens in database'); process.exit (-1); } }) .catch (e => { console.log ( 'Error loading tokens ! Cannot continue without tokens in database' ); process.exit (-1); }); }, updateTokens: function (refresh_token, access_token, expires_in) { return new Promise ((resolve, reject) => { let newTokenDocument = { id: 1, refresh_token: refresh_token, access_token: access_token, expires_in: new Date () / 1000 + expires_in, }; db .collection ('token_list') .update ({id: 1}, newTokenDocument, {upsert: true}, (err, result) => { if (err) { reject (err) }else{ config.REFRESH_TOKEN = refresh_token; config.TOKEN = access_token; config.TOKEN_EXPIRES_IN = newTokenDocument.expires_in; resolve (); } }); }); }, getSkill: function (skillDbID) { return new Promise ((resolve, reject) => { db .collection ('skill_list') .findOne ({_id: ObjectID (skillDbID)}, (err, skill) => { if (skill) { resolve (skill); } else { reject (err); } }); }); }, updateSkill: function (id, skill) { return new Promise ((resolve, reject) => { db .collection ('skill_list') .update ({_id: ObjectID (id)}, skill, {upsert: true}, (err, result) => { if (err){ reject(); }else{ resolve(); } }); }); }, deleteSkill: function (id) { return new Promise ((resolve, reject) => { db .collection ('skill_list') .remove ({_id: ObjectID (id)}, (err, result) => { if (err){ reject (err); }else{ resolve (result); } }); }); } };