From 5f3a5f150e36338d5dde169aa84b385834457ea4 Mon Sep 17 00:00:00 2001 From: Frank Bell Date: Fri, 11 Nov 2022 14:29:53 +0000 Subject: [PATCH] feat: run queries in parallel --- src/queries.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/queries.ts b/src/queries.ts index 3d2481d..53bf5ba 100644 --- a/src/queries.ts +++ b/src/queries.ts @@ -62,10 +62,20 @@ export const queriesBuilder = async ( context, queries: { [key: string]: Query } ) => { - for (let key of Object.keys(queries)) { - if (context.variables[`\$${key}`]) { + const build = async(key: string) => { + if (context.variables[`\$${key}`]) { console.log(`\n⚠️ WARNING: the key "$${key}" is being reassigned`); } context.variables[`\$${key}`] = await sendQuery(context, key, queries[key]); + }; + + // Run queries in parallel, provided no arguments reference variables + const variables = Object.entries(queries).some(([key, query]) => + query.args.some(arg => typeof(arg) === 'string' && arg.startsWith("$"))); + if (!variables) + await Promise.all(Object.keys(queries).map(build)); + else { + for (let key of Object.keys(queries)) + await build(key); } };