@qso-soft/shared
Version:
Shared library for QSO-soft
71 lines • 2.7 kB
JavaScript
import { sep } from 'path';
import { CHECKERS_FOLDER, OUTPUTS_CSV_FOLDER } from '../../constants';
import { getFileNameWithPrefix } from '../msg-to-template';
import { convertAndWriteToJSON, convertToCsvAndWrite } from './csv-converters';
export const saveFailedWalletsToCSV = ({ results, logger, projectName, }) => {
const logTemplate = {
action: 'saveFailedWalletsToCSV',
status: 'in progress',
};
const input = getFileNameWithPrefix(projectName, 'failed-wallets.csv');
const failedWallets = results.reduce((acc, cur) => {
if ('value' in cur) {
const wallet = cur.value.wallet;
const errorMessage = cur.value.errorMessage;
const shouldSaveResult = !!errorMessage;
if (shouldSaveResult) {
const walletDataToSave = {
id: wallet.id,
walletAddress: wallet.walletAddress,
privKey: wallet.privKey,
failReason: errorMessage,
};
return [...acc, walletDataToSave];
}
}
return acc;
}, []);
const dataToSave = failedWallets;
convertToCsvAndWrite({
data: dataToSave,
fileName: input,
outputPath: OUTPUTS_CSV_FOLDER,
});
if (failedWallets.length) {
logger.info(`${failedWallets.length} failed wallets was saved to src/_outputs/csv/${input} file`, {
...logTemplate,
});
}
};
export const saveCheckerDataToCSV = async ({ data, fileName, withoutFiltering, additionalFilterFields, }) => {
const inputName = `${fileName}.csv`;
const prevData = await convertAndWriteToJSON({
inputPath: `${CHECKERS_FOLDER}${sep}${inputName}`,
});
let filterFields = ['id'];
if (additionalFilterFields) {
filterFields = [...filterFields, ...additionalFilterFields];
}
const filteredPrevData = prevData.filter((currentData) => {
if (withoutFiltering) {
return true;
}
const fieldsExist = filterFields.every((field) => field in currentData && field in data);
if (fieldsExist) {
return filterFields.some((field) => `${currentData[field]}` !== `${data[field]}`);
}
return true;
});
const sortedArray = [...filteredPrevData, data].sort((firstItem, secondItem) => {
if ('id' in firstItem && 'id' in secondItem) {
return `${firstItem.id}`.localeCompare(`${secondItem.id}`);
}
return 0;
});
convertToCsvAndWrite({
data: sortedArray,
fileName: inputName,
outputPath: CHECKERS_FOLDER,
});
};
//# sourceMappingURL=save-result.js.map