Skip to content

Commit 74bbc7e

Browse files
committed
fix(api-gateway): Fix graphql query result processing via native results
1 parent f228325 commit 74bbc7e

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

packages/cubejs-api-gateway/src/graphql.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -270,11 +270,11 @@ function whereArgToQueryFilters(
270270
metaConfig: any[] = []
271271
) {
272272
const queryFilters: any[] = [];
273-
273+
274274
Object.keys(whereArg).forEach((key) => {
275275
const cubeExists = metaConfig.find((cube) => cube.config.name === key);
276276
const normalizedKey = cubeExists ? key : capitalize(key);
277-
277+
278278
if (['OR', 'AND'].includes(key)) {
279279
queryFilters.push({
280280
[key.toLowerCase()]: whereArg[key].reduce(
@@ -385,7 +385,7 @@ export function getJsonQuery(metaConfig: any, args: Record<string, any>, infos:
385385

386386
getFieldNodeChildren(infos.fieldNodes[0], infos).forEach(cubeNode => {
387387
const cubeExists = metaConfig.find((cube) => cube.config.name === cubeNode.name.value);
388-
388+
389389
const cubeName = cubeExists ? (cubeNode.name.value) : capitalize(cubeNode.name.value);
390390
const orderByArg = getArgumentValue(cubeNode, 'orderBy', infos.variableValues);
391391
// todo: throw if both RootOrderByInput and [Cube]OrderByInput provided
@@ -471,7 +471,7 @@ export function getJsonQueryFromGraphQLQuery(query: string, metaConfig: any, var
471471
const operation: any = ast.definitions.find(
472472
({ kind }) => kind === 'OperationDefinition'
473473
);
474-
474+
475475
const fieldNodes = operation?.selectionSet.selections;
476476

477477
let args = {};
@@ -487,7 +487,7 @@ export function getJsonQueryFromGraphQLQuery(query: string, metaConfig: any, var
487487
variableValues,
488488
fragments: {},
489489
};
490-
490+
491491
return getJsonQuery(metaConfig, args, resolveInfo);
492492
}
493493

@@ -505,7 +505,7 @@ export function makeSchema(metaConfig: any): GraphQLSchema {
505505
if (cube.public === false) {
506506
return false;
507507
}
508-
508+
509509
return ([...cube.config.measures, ...cube.config.dimensions].filter((member) => member.isVisible)).length > 0;
510510
}
511511

@@ -652,16 +652,23 @@ export function makeSchema(metaConfig: any): GraphQLSchema {
652652
query,
653653
queryType: QueryType.REGULAR_QUERY,
654654
context: req.context,
655-
res: (message) => {
655+
res: async (message) => {
656656
if (message.error) {
657657
reject(new Error(message.error));
658658
}
659-
resolve(message);
659+
if (message.isWrapper) {
660+
// TODO: Avoid JSON-encode-decode here
661+
const resMsg = new TextDecoder().decode(await message.getFinalResult());
662+
resolve(JSON.parse(resMsg));
663+
} else {
664+
resolve(message);
665+
}
660666
},
661667
apiType: 'graphql',
662668
}).catch(reject);
663669
});
664670

671+
// TODO: Move postprocessing to native?
665672
parseDates(results);
666673

667674
return results.data.map(entry => R.toPairs(entry)

0 commit comments

Comments
 (0)