diff --git a/src/cmds/cns-cmds/record-cmds/list.ts b/src/cmds/cns-cmds/record-cmds/list.ts index c93340b..58ffb36 100644 --- a/src/cmds/cns-cmds/record-cmds/list.ts +++ b/src/cmds/cns-cmds/record-cmds/list.ts @@ -9,6 +9,12 @@ export const command = 'list'; export const desc = 'List records.'; export const builder = { + 'bond-id': { + type: 'string' + }, + owner: { + type: 'string' + }, type: { type: 'string' }, @@ -24,7 +30,7 @@ export const builder = { export const handler = async (argv: Arguments) => { const { services: { cns: cnsConfig } } = getConfig(argv.config as string) const { restEndpoint, gqlEndpoint, chainId } = getConnectionInfo(argv, cnsConfig); - const { type, name, all } = argv; + const { type, name, bondId, owner, all } = argv; const filters: any = {}; const filterArgs = argv._.slice(3); @@ -38,15 +44,25 @@ export const handler = async (argv: Arguments) => { const registry = new Registry(gqlEndpoint, restEndpoint, chainId); + let result: any[]; try { - const result = await registry.queryRecords({...filters, type, name}, all as boolean); - queryOutput(result, argv.output) + result = await registry.queryRecords({...filters, type, name}, all as boolean); } catch (e) { // https://git.vdb.to/cerc-io/laconicd/issues/118 if (Array.isArray(e) && (e as []).length && e[0].message?.includes("store doesn't have key")) { - queryOutput([], argv.output) + result = []; } else { throw e; } } + + if (bondId) { + result = result.filter(v => v.bondId === bondId); + } + + if (owner) { + result = result.filter(v => v.owners?.find((e: string) => e === owner)); + } + + queryOutput(result, argv.output) }