From 2613d16ed0459dc5b50ed120998de9dcb2420d3b Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Fri, 12 Apr 2019 13:27:57 +0100 Subject: [PATCH] feat(plugins): enable plugins to prevent using asterisk This is important for plugins that need to get access to certain special table properties, such as `ctid`. --- .../src/queryFromResolveDataFactory.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/graphile-build-pg/src/queryFromResolveDataFactory.js b/packages/graphile-build-pg/src/queryFromResolveDataFactory.js index 3819684fc..2198e7878 100644 --- a/packages/graphile-build-pg/src/queryFromResolveDataFactory.js +++ b/packages/graphile-build-pg/src/queryFromResolveDataFactory.js @@ -18,7 +18,7 @@ export default (queryBuilderOptions: QueryBuilderOptions = {}) => ( from: SQL, fromAlias: ?SQL, resolveData: DataForType, - options: { + inOptions: { withPagination?: boolean, withPaginationAsFields?: boolean, asJson?: boolean, @@ -36,11 +36,21 @@ export default (queryBuilderOptions: QueryBuilderOptions = {}) => ( pgQuery, pgAggregateQuery, pgCursorPrefix: reallyRawCursorPrefix, + pgDontUseAsterisk, calculateHasNextPage, calculateHasPreviousPage, usesCursor: explicitlyUsesCursor, } = resolveData; + const preventAsterisk = pgDontUseAsterisk + ? pgDontUseAsterisk.length > 0 + : false; + const options = { + ...inOptions, + // Allow pgDontUseAsterisk to override useAsterisk + useAsterisk: inOptions.useAsterisk && !preventAsterisk, + }; + const usesCursor: boolean = (explicitlyUsesCursor && explicitlyUsesCursor.length > 0) || (calculateHasNextPage && calculateHasNextPage.length > 0) ||