@haechi-labs/henesis-cli
Version:
🚀 Command Line Interface tool to Utilize henesis
118 lines • 4.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const base_1 = tslib_1.__importDefault(require("../../common/base"));
const cli_ux_1 = require("cli-ux");
const Integration_1 = require("../../types/Integration");
const errors_1 = require("../../errors");
const integration_1 = tslib_1.__importDefault(require("../../rpc/integration"));
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
const utc_1 = tslib_1.__importDefault(require("dayjs/plugin/utc"));
const utils_1 = require("../../utils");
exports.columns = {
subscriptionId: {
header: 'subscriptionId',
minWidth: 16,
get: (row) => row.subscriptionId,
},
events: {
header: 'events',
minWidth: 13,
get: (row) => row.events,
},
};
class Usage extends base_1.default {
async run() {
const { args } = this.parse(Usage);
if (args.integrationId === undefined) {
this.error(errors_1.MISSING_INTEGRATIONID_ARGS);
}
try {
// Date Setting
dayjs_1.default.extend(utc_1.default);
const now = dayjs_1.default().utc();
const startOfThisMonth = utils_1.getStartOfThisMonth();
const startOfLastMonth = utils_1.getStartOfLastMonth();
const endOfLastMonth = utils_1.getEndOfLastMonth();
// rpc call
const [integrationStatOfThisMonth, integrationStatOfLastMonth,] = await Promise.all([
integration_1.default.getIntegrationUsage(args.integrationId, startOfThisMonth.toISOString(), now.toISOString()),
integration_1.default.getIntegrationUsage(args.integrationId, startOfLastMonth.toISOString(), endOfLastMonth.toISOString()),
]);
// parsing data
const subscriptionUsageOfThisMonth = this.subscriptionUsageMapper(integrationStatOfThisMonth);
const subscriptionUsageOfLastMonth = this.subscriptionUsageMapper(integrationStatOfLastMonth);
// render CUI
this.log('Henesis Event Streamer (Ethereum) Statistics');
this.log('All times are in UTC+0.');
const thisMonth = '[' +
now.year().toString() +
'/' +
(now.month() + 1).toString() +
' (this month)]';
const lastMonth = '[' +
startOfLastMonth.getUTCFullYear().toString() +
'/' +
(startOfLastMonth.getUTCMonth() + 1).toString() +
' (last month)]';
if (subscriptionUsageOfThisMonth.length > 0) {
this.log();
this.draw(thisMonth, subscriptionUsageOfThisMonth);
}
else {
this.log();
this.log(thisMonth);
this.log();
this.log('No usage data in this month');
}
this.log();
this.log('------------------------');
if (subscriptionUsageOfLastMonth.length > 0) {
this.log();
this.draw(lastMonth, subscriptionUsageOfLastMonth);
}
else {
this.log();
this.log(lastMonth);
this.log();
this.log('No usage data in last month');
}
}
catch (err) {
this.error(err.message);
}
}
draw(date, subscriptionUsage) {
const emptyArray = [];
const title = {
date: {
header: date,
minWidth: 16,
},
};
cli_ux_1.cli.table(emptyArray, title, {
printLine: this.log,
});
if (subscriptionUsage.length > 0) {
this.log();
cli_ux_1.cli.table(subscriptionUsage, exports.columns, {
printLine: this.log,
});
}
}
subscriptionUsageMapper(stat) {
let subscriptionUsage = [];
for (const subscription of stat.subscriptions) {
subscriptionUsage.push(new Integration_1.SubscriptionUsage(subscription.id, utils_1.formatNumbers(subscription.eventCount)));
}
return subscriptionUsage;
}
}
exports.default = Usage;
Usage.description = 'show event streamer statistics';
Usage.examples = [
`$ henesis integration:usage my-integration-id-xqxz`,
];
Usage.flags = {};
Usage.args = [{ name: 'integrationId' }];
//# sourceMappingURL=usage.js.map