Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 3x 3x 3x 3x 2x 1x 1x 1x 1x 3x 4x 2x 2x 2x 2x 2x 4x 3x 2x 2x 2x 3x 1x 1x 3x | /**
* @module capability
*/
const capabilityRepo = require("../../repositories/capability");
const cache = require("../cache");
const _ = require('lodash');
/**
* Fetch all capabilities. If cached,
* return from cache, otherwise, fetch from
* database and cache the values.
* @return {Array} all capability objects
*/
const fetchAll = async () => {
if (cache.has("capabilities")) {
return cache.get("capabilities");
} else {
const findResult = await capabilityRepo.findAll();
cache.set("capabilities", findResult.rows);
return findResult.rows;
}
};
/**
* Fetch capabilities based on input keyword.
* If capabilities are cached, return from cache,
* otherwise, fetch from database.
* @param {String} keyword
* @return {Array} matching capability objects
*/
const fetchByKeyword = async (keyword) => {
if (cache.has("capabilities")) {
const cachedVal = cache.get("capabilities");
const safeKey = _.escapeRegExp(keyword);
const regex = RegExp(safeKey ? safeKey : '', 'i');
const matching = [];
cachedVal.forEach(e => {
if (regex.test(e.title)) {
matching.push(e);
}
});
return matching;
}
const findResult = await capabilityRepo.findByKeyword(keyword ? keyword : '');
return findResult.rows;
};
/**
* Fetch a capability object by id from database.
* @param {Number} id
* @return {Object} capability object
*/
const fetchById = async (id) => {
const findResult = await capabilityRepo.findById(id);
return findResult.rows[0];
};
module.exports = {
fetchAll,
fetchByKeyword,
fetchById,
};
|