From d970989d0e72f448066ce2fae90763c84ad11324 Mon Sep 17 00:00:00 2001 From: longpv Date: Mon, 18 Dec 2023 12:52:25 +0700 Subject: [PATCH] add logs to user can view total time processing --- src/execute/executeStakerReward.ts | 71 +++++++++++++----------- src/execute/executeValidatorReward.ts | 77 +++++++++++++++------------ src/module/RewardStakes.ts | 4 ++ src/utils/date.ts | 4 ++ 4 files changed, 90 insertions(+), 66 deletions(-) diff --git a/src/execute/executeStakerReward.ts b/src/execute/executeStakerReward.ts index 68ed479..86d78b7 100755 --- a/src/execute/executeStakerReward.ts +++ b/src/execute/executeStakerReward.ts @@ -20,6 +20,7 @@ import { sortByTimeStamp, } from '../utils'; import { convertAddressesToArray } from '../utils/convert'; +import { getTotalSecondProcess } from '../utils/date'; import { DEFAULT_LIST_PRICE, HEADER_FOR_STAKING_REWARD, @@ -28,6 +29,8 @@ import { import { Subgraph } from '../utils/subgraph'; export const main = async (argv: stakerRewardArgs) => { + const startTimeProcess = Date.now(); + // validate address const addresses = convertAddressesToArray(argv.staker_addresses); if (!isValidAddresses(addresses)) { @@ -71,6 +74,8 @@ export const main = async (argv: stakerRewardArgs) => { `staker-reward`, header, ); + const totalSecondsProcess = getTotalSecondProcess(startTimeProcess); + console.log(`==> ${totalSecondsProcess} seconds`); }; const getHeader = (argv: stakerRewardArgs): string[] => { @@ -127,37 +132,41 @@ const getDataExport = async ( ): Promise => { // set the address to lowercase const addresses = convertAddressesToArray(argv.staker_addresses); - const resultsPromise = prepareData.map(async (item: PrepareData) => { + + const results: DataExport[] = []; + + for (const item of prepareData) { const { oasPrices, timeData } = item; const { block, epoch, timestamp } = timeData; - console.log('RUNNING EPOCH ', epoch); - - const validatorResults = await Promise.all( - addresses?.map(async (address: string) => { - const listStakerStake = await subgraph.getListStakerStake( - block, - address, - epoch, - ); - - // format data - const { rowData } = getAdditionalDataForStakerReward( - oasPrices, - listStakerStake, - timeData, - argv.price, - address, - ); - return { - rowData, - timestamp, - }; - }), - ); - - return validatorResults; - }); - - const results = await Promise.all(resultsPromise); - return results.flat(); + const startTimeProcess = Date.now(); + console.log('PROCESSING WITH EPOCH', epoch); + + const promises = addresses?.map(async (address: string) => { + const listStakerStake = await subgraph.getListStakerStake( + block, + address, + epoch, + ); + + // format data + const { rowData } = getAdditionalDataForStakerReward( + oasPrices, + listStakerStake, + timeData, + argv.price, + address, + ); + return { + rowData, + timestamp, + }; + }); + + const stakerResults = await Promise.all(promises); + + results.push(...stakerResults); + const totalSecondsEpoch = getTotalSecondProcess(startTimeProcess); + console.info(`--> Epoch ${epoch} took ${totalSecondsEpoch} seconds`); + } + return results; }; diff --git a/src/execute/executeValidatorReward.ts b/src/execute/executeValidatorReward.ts index 596c5bb..c4906c0 100755 --- a/src/execute/executeValidatorReward.ts +++ b/src/execute/executeValidatorReward.ts @@ -18,14 +18,17 @@ import { isValidAddresses, sortByTimeStamp, } from '../utils'; +import { convertAddressesToArray } from '../utils/convert'; +import { getTotalSecondProcess } from '../utils/date'; import { DEFAULT_LIST_PRICE, HEADER_FOR_VALIDATOR_REWARD, } from '../utils/google'; import { Subgraph } from '../utils/subgraph'; -import { convertAddressesToArray } from '../utils/convert'; // main process export const main = async (argv: validatorRewardArgs) => { + const startTimeProcess = Date.now(); + // validate address const addresses = convertAddressesToArray(argv.validator_addresses); if (!isValidAddresses(addresses)) { @@ -66,6 +69,8 @@ export const main = async (argv: validatorRewardArgs) => { 'commission-reward', header, ); + const totalSecondsProcess = getTotalSecondProcess(startTimeProcess); + console.log(`==> ${totalSecondsProcess} seconds`); }; const getHeader = (argv: validatorRewardArgs): string[] => { @@ -122,42 +127,44 @@ const getDataExport = async ( subgraph: Subgraph, argv: validatorRewardArgs, ): Promise => { - // Set the address to lowercase const validator_addresses = convertAddressesToArray(argv.validator_addresses); - const resultsPromise = prepareData.map(async (item: PrepareData) => { + const results: DataExport[] = []; + + for (const item of prepareData) { const { oasPrices, timeData } = item; const { block, epoch, timestamp } = timeData; - console.log('RUNNING EPOCH ', epoch); - - const validatorResults = await Promise.all( - validator_addresses?.map(async (address: string) => { - const validatorAddress = address; - // Get totalStake of validator - const validatorStake = await subgraph.getValidatorTotalStake( - epoch, - block, - validatorAddress, - ); - - // Format data - const { rowData } = getAdditionalDataForCommissionReward( - oasPrices, - validatorStake, - timeData, - argv.price, - validatorAddress, - ); - return { - rowData, - timestamp, - }; - }), - ); - - return validatorResults; - }); - - const results = await Promise.all(resultsPromise); - return results.flat(); + const startTimeProcess = Date.now(); + console.log('PROCESSING WITH EPOCH', epoch); + + const promises = validator_addresses.map(async (address: string) => { + const validatorAddress = address; + const validatorStake = await subgraph.getValidatorTotalStake( + epoch, + block, + validatorAddress, + ); + + const { rowData } = getAdditionalDataForCommissionReward( + oasPrices, + validatorStake, + timeData, + argv.price, + validatorAddress, + ); + + return { + rowData, + timestamp, + }; + }); + + const validatorResults = await Promise.all(promises); + + results.push(...validatorResults); + const totalSecondsEpoch = getTotalSecondProcess(startTimeProcess); + console.info(`--> Epoch ${epoch} took ${totalSecondsEpoch} seconds`); + } + + return results; }; diff --git a/src/module/RewardStakes.ts b/src/module/RewardStakes.ts index 99aab87..e21ba77 100755 --- a/src/module/RewardStakes.ts +++ b/src/module/RewardStakes.ts @@ -156,6 +156,8 @@ export const handleExport = async ( fileName: string, header: string[], ) => { + console.info(`Start handle export`); + let doc: GoogleSpreadsheet; if (isOnline) { doc = await getSpreadSheet(); @@ -168,7 +170,9 @@ export const handleExport = async ( ? await exportCsvOnline(doc, rowData, timestamp, header) : await exportCsvLocal(rowData, header, fileName, output); await sleep(1500); + console.log(`Exported: ${i + 1}/${array.length}`); } + console.log('Export process complete!'); }; export const getAdditionalDataForCommissionReward = ( diff --git a/src/utils/date.ts b/src/utils/date.ts index c5ac784..e21a8a0 100755 --- a/src/utils/date.ts +++ b/src/utils/date.ts @@ -19,3 +19,7 @@ export const getTime = (timestamp: Date) => { export const getMonthDate = (timestamp: Date) => { return dateParts(timestamp).slice(0, 2).join(''); }; + +export const getTotalSecondProcess = (startTimeProcess: number) => { + return ((Date.now() - startTimeProcess) / 1000).toFixed(2); +};