Files
old-tellall/backend/helpers/database.js
2018-01-08 21:50:24 +01:00

107 lines
2.7 KiB
JavaScript

const config = require ('../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);
config.REFRESH_TOKEN = refresh_token;
config.TOKEN = access_token;
config.TOKEN_EXPIRES_IN = newTokenDocument.expires_in;
resolve ();
});
});
},
loadSkill: 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 (JSON.parse (result).nModified === 1) {
//database update ok
resolve ();
} else {
reject ();
}
});
});
},
deleteSkill: function (id) {
return new Promise ((resolve, reject) => {
db
.collection ('skill_list')
.remove ({_id: ObjectID (id)}, (err, result) => {
if (err) reject (err);
resolve (result);
});
});
},
getSkill: function (id) {
return new Promise ((resolve, reject) => {
db
.collection ('skill_list')
.find ({_id: ObjectID (id)})
.toArray ((err, result) => {
if (err) reject (err);
resolve (result);
});
});
},
};