From a8e63d61c9053cb8452e7cbd3b09f66fd01d8126 Mon Sep 17 00:00:00 2001 From: hopeyen Date: Mon, 15 Aug 2022 14:30:39 -0700 Subject: [PATCH] indexer-cli: command to batch approve queued --- .../src/commands/indexer/actions/approve.ts | 22 ++++++++++++++----- packages/indexer-common/src/actions.ts | 1 + .../src/indexer-management/client.ts | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/packages/indexer-cli/src/commands/indexer/actions/approve.ts b/packages/indexer-cli/src/commands/indexer/actions/approve.ts index dba7076b6..890d63b52 100644 --- a/packages/indexer-cli/src/commands/indexer/actions/approve.ts +++ b/packages/indexer-cli/src/commands/indexer/actions/approve.ts @@ -4,10 +4,12 @@ import chalk from 'chalk' import { loadValidatedConfig } from '../../../config' import { createIndexerManagementClient } from '../../../client' import { fixParameters, printObjectOrArray } from '../../../command-helpers' -import { approveActions } from '../../../actions' +import { approveActions, fetchActions } from '../../../actions' +import { ActionStatus } from '@graphprotocol/indexer-common' const HELP = ` ${chalk.bold('graph indexer actions approve')} [options] [ ...] +${chalk.bold('graph indexer actions approve')} [options] queued ${chalk.dim('Options:')} @@ -37,6 +39,8 @@ module.exports = { let numericActionIDs: number[] + const config = loadValidatedConfig() + const client = await createIndexerManagementClient({ url: config.api }) try { if (!['json', 'yaml', 'table'].includes(outputFormat)) { throw Error( @@ -48,7 +52,18 @@ module.exports = { throw Error(`Missing required argument: 'actionID'`) } - numericActionIDs = actionIDs.map(action => +action) + // If actionIDs is 'queued', then populate actionIDs with actions that are queued + if (actionIDs.join() == 'queued') { + const queuedActions = await fetchActions(client, { + status: ActionStatus.QUEUED, + }) + numericActionIDs = queuedActions.map(action => action.id) + if (numericActionIDs.length === 0) { + throw Error(`No 'queued' actions found.`) + } + } else { + numericActionIDs = actionIDs.map(action => +action) + } inputSpinner.succeed('Processed input parameters') } catch (error) { @@ -60,9 +75,6 @@ module.exports = { const actionSpinner = toolbox.print.spin(`Approving ${actionIDs.length} actions`) try { - const config = loadValidatedConfig() - const client = await createIndexerManagementClient({ url: config.api }) - const queuedAction = await approveActions(client, numericActionIDs) actionSpinner.succeed(`Actions approved`) diff --git a/packages/indexer-common/src/actions.ts b/packages/indexer-common/src/actions.ts index 43074c03e..7372c7199 100644 --- a/packages/indexer-common/src/actions.ts +++ b/packages/indexer-common/src/actions.ts @@ -128,6 +128,7 @@ export interface ActionFilter { } export interface ActionResult { + id: number type: ActionType deploymentID: string allocationID: string | null diff --git a/packages/indexer-common/src/indexer-management/client.ts b/packages/indexer-common/src/indexer-management/client.ts index 9e5c607ba..552725d48 100644 --- a/packages/indexer-common/src/indexer-management/client.ts +++ b/packages/indexer-common/src/indexer-management/client.ts @@ -180,6 +180,7 @@ const SCHEMA_SDL = gql` status: String! transaction: String failureReason: String + priority: Int } input ActionFilter {