const {
v4: uuid
} = require('uuid');
function enumify(arr, options) {
options = Object.assign({
randomize: false
}, options || {});
return arr.reduce(function(acc, val) {
return Object.assign({
[val]: options.randomize ? uuid() : (options.mapify ? true : val)
}, acc);
}, {});
}
function camelCase(string) {
return string.charAt(0).toUpperCase() + string.substr(1);
}
function query(query, wildcards) {
return new Promise(function(resolve, reject) {
let args = [query, function(err, rows) {
if (err) {
reject(err);
} else {
resolve(rows);
}
}];
if (wildcards) {
args.splice(1, 0, wildcards);
}
MYSQL_POOL.query(...args);
});
}
module.exports = {
noop: o => o,
uuid: uuid,
enumify: enumify,
camelCase: camelCase,
// Queries as promises
query: query,
includes_substr: function(arr, str) {
for (const val of arr) {
if (val.toLowerCase().includes(str.toLowerCase())) {
return true;
}
}
return false;
},
ok: function(data) {
return Object.assign({
status: "ok"
}, data || {});
},
error: function(error, data) {
return Object.assign({
status: error || "error"
}, data || {});
},
asyncCallback: function(asyncFunctions, callback) {
let finishedOperations = 0;
let args = [];
asyncFunctions.forEach(function(asyncFunction) {
asyncFunction(function() {
finishedOperations++;
if (!args.length && arguments.length) {
args = [...arguments];
}
if (finishedOperations >= asyncFunctions.length) {
callback(...args);
}
});
});
if (!asyncFunctions.length) {
callback();
}
},
};