UNPKG

@qso-soft/shared

Version:

Shared library for QSO-soft

71 lines 2.7 kB
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