@qso-soft/shared
Version:
Shared library for QSO-soft
55 lines • 2.12 kB
JavaScript
import { NUMBER_ONLY_REGEXP } from '../../constants';
import { getFileNameWithPrefix } from '../msg-to-template';
export const getWalletsFromKeys = (logger, jsonWallets, projectName) => {
const logTemplate = {
moduleName: 'Wallets',
action: 'getWalletsFromKeys',
};
const fileName = getFileNameWithPrefix(projectName, 'wallets.json');
logger.info(`Getting wallets from ${fileName}`, logTemplate);
return jsonWallets;
};
const multipleFilterGuard = (filter) => {
return !!filter && Array.isArray(filter[0]);
};
const singleFilterWallets = (data, filter, logger) => {
const [start, end] = filter;
const isIncorrectFilter = isNaN(+start) || isNaN(+end);
if (isIncorrectFilter) {
logger.warning(`Format of values in range ${start}-${end} is incorrect`);
}
return data.filter((wallet) => {
const splittedWallet = wallet.id.split(NUMBER_ONLY_REGEXP);
const numberPart = splittedWallet[0];
const isIncorrectId = !numberPart || isNaN(+numberPart);
if (isIncorrectId) {
return false;
}
return +numberPart >= +start && +numberPart <= +end;
});
};
export const getRangedByIdWallets = (wallets, filters, logger) => {
const logTemplate = {
moduleName: 'Wallets',
action: 'getRangedByIdWallets',
status: 'in progress',
};
const isFiltersEmpty = !filters[0] || !filters[1];
if (isFiltersEmpty) {
return wallets;
}
const isMultipleFilter = multipleFilterGuard(filters);
const filteredWallets = [];
if (isMultipleFilter) {
logger.info(`Getting wallets for ranges ${filters.map(([start, end]) => `${start}-${end}`)}`, logTemplate);
for (const filter of filters) {
filteredWallets.push(...singleFilterWallets(wallets, filter, logger));
}
}
else {
logger.info(`Getting wallets for range ${filters[0]}-${filters[1]}`, logTemplate);
filteredWallets.push(...singleFilterWallets(wallets, filters, logger));
}
return filteredWallets;
};
//# sourceMappingURL=get-filtered-wallets.js.map