graphile-build-pg 4.9.1 → 4.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +1 -0
  2. package/node8plus/plugins/PageInfoStartEndCursor.js +2 -2
  3. package/node8plus/plugins/PageInfoStartEndCursor.js.flow +6 -2
  4. package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
  5. package/node8plus/plugins/PgAllRows.js +1 -1
  6. package/node8plus/plugins/PgAllRows.js.flow +6 -3
  7. package/node8plus/plugins/PgAllRows.js.map +1 -1
  8. package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -2
  9. package/node8plus/plugins/PgBackwardRelationPlugin.js.flow +8 -2
  10. package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
  11. package/node8plus/plugins/PgBasicsPlugin.js +1 -1
  12. package/node8plus/plugins/PgBasicsPlugin.js.flow +1 -1
  13. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  14. package/node8plus/plugins/PgConditionComputedColumnPlugin.js +1 -1
  15. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.flow +4 -1
  16. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
  17. package/node8plus/plugins/PgConnectionArgCondition.js +3 -3
  18. package/node8plus/plugins/PgConnectionArgCondition.js.flow +11 -3
  19. package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
  20. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +5 -5
  21. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.flow +20 -7
  22. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
  23. package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -2
  24. package/node8plus/plugins/PgConnectionArgOrderBy.js.flow +8 -2
  25. package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
  26. package/node8plus/plugins/PgConnectionTotalCount.js +1 -1
  27. package/node8plus/plugins/PgConnectionTotalCount.js.flow +4 -1
  28. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  29. package/node8plus/plugins/PgForwardRelationPlugin.js +1 -1
  30. package/node8plus/plugins/PgForwardRelationPlugin.js.flow +4 -1
  31. package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgIntrospectionPlugin.d.ts +1 -0
  33. package/node8plus/plugins/PgIntrospectionPlugin.js +182 -159
  34. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +218 -198
  35. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  36. package/node8plus/plugins/PgJWTPlugin.js +1 -1
  37. package/node8plus/plugins/PgJWTPlugin.js.flow +3 -1
  38. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  39. package/node8plus/plugins/PgMutationCreatePlugin.js +7 -7
  40. package/node8plus/plugins/PgMutationCreatePlugin.js.flow +26 -7
  41. package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
  42. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +2 -2
  43. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.flow +8 -2
  44. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  45. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +11 -11
  46. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +40 -11
  47. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  48. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +6 -6
  49. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.flow +24 -6
  50. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  51. package/node8plus/plugins/PgRecordReturnTypesPlugin.js +1 -1
  52. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.flow +6 -3
  53. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
  54. package/node8plus/plugins/PgRowNode.js +2 -2
  55. package/node8plus/plugins/PgRowNode.js.flow +8 -2
  56. package/node8plus/plugins/PgRowNode.js.map +1 -1
  57. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +6 -6
  58. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.flow +24 -6
  59. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  60. package/node8plus/plugins/PgTablesPlugin.js +13 -13
  61. package/node8plus/plugins/PgTablesPlugin.js.flow +56 -20
  62. package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
  63. package/node8plus/plugins/PgTypesPlugin.js +62 -78
  64. package/node8plus/plugins/PgTypesPlugin.js.flow +193 -76
  65. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  66. package/node8plus/plugins/makeProcField.js +3 -3
  67. package/node8plus/plugins/makeProcField.js.flow +16 -7
  68. package/node8plus/plugins/makeProcField.js.map +1 -1
  69. package/node8plus/plugins/viaTemporaryTable.js +1 -1
  70. package/node8plus/plugins/viaTemporaryTable.js.flow +8 -4
  71. package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
  72. package/node8plus/postgresInterval.js +12 -33
  73. package/node8plus/postgresInterval.js.flow +22 -51
  74. package/node8plus/postgresInterval.js.map +1 -1
  75. package/package.json +9 -9
  76. package/res/watch-fixtures.sql +1 -1
package/README.md CHANGED
@@ -25,6 +25,7 @@ And please give some love to our featured sponsors 🤩:
25
25
  <table><tr>
26
26
  <td align="center"><a href="http://chads.website"><img src="https://graphile.org/images/sponsors/chadf.png" width="90" height="90" alt="Chad Furman" /><br />Chad Furman</a> *</td>
27
27
  <td align="center"><a href="https://storyscript.com/?utm_source=postgraphile"><img src="https://graphile.org/images/sponsors/storyscript.png" width="90" height="90" alt="Storyscript" /><br />Storyscript</a> *</td>
28
+ <td align="center"><a href="https://surge.io/"><img src="https://graphile.org/images/sponsors/surge.png" width="90" height="90" alt="Surge.io" /><br />Surge.io</a> *</td>
28
29
  <td align="center"><a href="https://postlight.com/?utm_source=graphile"><img src="https://graphile.org/images/sponsors/postlight.jpg" width="90" height="90" alt="Postlight" /><br />Postlight</a> *</td>
29
30
  </tr></table>
30
31
 
@@ -30,7 +30,7 @@ var PageInfoStartEndCursor = function PageInfoStartEndCursor(builder) {
30
30
  usesCursor: [true]
31
31
  }));
32
32
  return {
33
- description: "When paginating backwards, the cursor to continue.",
33
+ description: build.wrapDescription("When paginating backwards, the cursor to continue.", "field"),
34
34
  type: Cursor
35
35
  };
36
36
  }, {
@@ -43,7 +43,7 @@ var PageInfoStartEndCursor = function PageInfoStartEndCursor(builder) {
43
43
  usesCursor: [true]
44
44
  }));
45
45
  return {
46
- description: "When paginating forwards, the cursor to continue.",
46
+ description: build.wrapDescription("When paginating forwards, the cursor to continue.", "field"),
47
47
  type: Cursor
48
48
  };
49
49
  }, {
@@ -19,8 +19,10 @@ export default (function PageInfoStartEndCursor(builder) {
19
19
  ({ addDataGenerator }) => {
20
20
  addDataGenerator(() => ({ usesCursor: [true] }));
21
21
  return {
22
- description:
22
+ description: build.wrapDescription(
23
23
  "When paginating backwards, the cursor to continue.",
24
+ "field"
25
+ ),
24
26
  type: Cursor,
25
27
  };
26
28
  },
@@ -33,8 +35,10 @@ export default (function PageInfoStartEndCursor(builder) {
33
35
  ({ addDataGenerator }) => {
34
36
  addDataGenerator(() => ({ usesCursor: [true] }));
35
37
  return {
36
- description:
38
+ description: build.wrapDescription(
37
39
  "When paginating forwards, the cursor to continue.",
40
+ "field"
41
+ ),
38
42
  type: Cursor,
39
43
  };
40
44
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PageInfoStartEndCursor.js"],"names":["PageInfoStartEndCursor","builder","hook","fields","build","context","extend","getTypeByName","inflection","Self","fieldWithHooks","name","builtin","Cursor","startCursor","addDataGenerator","usesCursor","description","type","isPageInfoStartCursorField","endCursor"],"mappings":";;;;;;;IAGyBA,sB,GAAT,SAASA,sBAAT,CAAgCC,OAAhC,EAAyC;AACvDA,EAAAA,OAAO,CAACC,IAAR,CACE,0BADF,EAEE,CAACC,MAAD,EAASC,KAAT,EAAgBC,OAAhB,KAA4B;AAC1B,UAAM;AAAEC,MAAAA,MAAF;AAAUC,MAAAA,aAAV;AAAyBC,MAAAA;AAAzB,QAAwCJ,KAA9C;AACA,UAAM;AAAEK,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAA2BL,OAAjC;;AACA,QAAII,IAAI,CAACE,IAAL,KAAcH,UAAU,CAACI,OAAX,CAAmB,UAAnB,CAAlB,EAAkD;AAChD,aAAOT,MAAP;AACD;;AACD,UAAMU,MAAM,GAAGN,aAAa,CAAC,QAAD,CAA5B;AACA,WAAOD,MAAM,CACXH,MADW,EAEX;AACEW,MAAAA,WAAW,EAAEJ,cAAc,CACzB,aADyB,EAEzB,CAAC;AAAEK,QAAAA;AAAF,OAAD,KAA0B;AACxBA,QAAAA,gBAAgB,CAAC,OAAO;AAAEC,UAAAA,UAAU,EAAE,CAAC,IAAD;AAAd,SAAP,CAAD,CAAhB;AACA,eAAO;AACLC,UAAAA,WAAW,EACT,oDAFG;AAGLC,UAAAA,IAAI,EAAEL;AAHD,SAAP;AAKD,OATwB,EAUzB;AACEM,QAAAA,0BAA0B,EAAE;AAD9B,OAVyB,CAD7B;AAeEC,MAAAA,SAAS,EAAEV,cAAc,CACvB,WADuB,EAEvB,CAAC;AAAEK,QAAAA;AAAF,OAAD,KAA0B;AACxBA,QAAAA,gBAAgB,CAAC,OAAO;AAAEC,UAAAA,UAAU,EAAE,CAAC,IAAD;AAAd,SAAP,CAAD,CAAhB;AACA,eAAO;AACLC,UAAAA,WAAW,EACT,mDAFG;AAGLC,UAAAA,IAAI,EAAEL;AAHD,SAAP;AAKD,OATsB,EAUvB;AACEM,QAAAA,0BAA0B,EAAE;AAD9B,OAVuB;AAf3B,KAFW,EAgCV,mCAAkCV,IAAI,CAACE,IAAK,EAhClC,CAAb;AAkCD,GA3CH,EA4CE,CAAC,wBAAD,CA5CF,EA6CE,EA7CF,EA8CE,CAAC,QAAD,CA9CF;AAgDD,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PageInfoStartEndCursor(builder) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const { extend, getTypeByName, inflection } = build;\n const { Self, fieldWithHooks } = context;\n if (Self.name !== inflection.builtin(\"PageInfo\")) {\n return fields;\n }\n const Cursor = getTypeByName(\"Cursor\");\n return extend(\n fields,\n {\n startCursor: fieldWithHooks(\n \"startCursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({ usesCursor: [true] }));\n return {\n description:\n \"When paginating backwards, the cursor to continue.\",\n type: Cursor,\n };\n },\n {\n isPageInfoStartCursorField: true,\n }\n ),\n endCursor: fieldWithHooks(\n \"endCursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({ usesCursor: [true] }));\n return {\n description:\n \"When paginating forwards, the cursor to continue.\",\n type: Cursor,\n };\n },\n {\n isPageInfoStartCursorField: true,\n }\n ),\n },\n `Adding startCursor/endCursor to ${Self.name}`\n );\n },\n [\"PageInfoStartEndCursor\"],\n [],\n [\"Cursor\"]\n );\n}: Plugin);\n"],"file":"PageInfoStartEndCursor.js"}
1
+ {"version":3,"sources":["../../src/plugins/PageInfoStartEndCursor.js"],"names":["PageInfoStartEndCursor","builder","hook","fields","build","context","extend","getTypeByName","inflection","Self","fieldWithHooks","name","builtin","Cursor","startCursor","addDataGenerator","usesCursor","description","wrapDescription","type","isPageInfoStartCursorField","endCursor"],"mappings":";;;;;;;IAGyBA,sB,GAAT,SAASA,sBAAT,CAAgCC,OAAhC,EAAyC;AACvDA,EAAAA,OAAO,CAACC,IAAR,CACE,0BADF,EAEE,CAACC,MAAD,EAASC,KAAT,EAAgBC,OAAhB,KAA4B;AAC1B,UAAM;AAAEC,MAAAA,MAAF;AAAUC,MAAAA,aAAV;AAAyBC,MAAAA;AAAzB,QAAwCJ,KAA9C;AACA,UAAM;AAAEK,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAA2BL,OAAjC;;AACA,QAAII,IAAI,CAACE,IAAL,KAAcH,UAAU,CAACI,OAAX,CAAmB,UAAnB,CAAlB,EAAkD;AAChD,aAAOT,MAAP;AACD;;AACD,UAAMU,MAAM,GAAGN,aAAa,CAAC,QAAD,CAA5B;AACA,WAAOD,MAAM,CACXH,MADW,EAEX;AACEW,MAAAA,WAAW,EAAEJ,cAAc,CACzB,aADyB,EAEzB,CAAC;AAAEK,QAAAA;AAAF,OAAD,KAA0B;AACxBA,QAAAA,gBAAgB,CAAC,OAAO;AAAEC,UAAAA,UAAU,EAAE,CAAC,IAAD;AAAd,SAAP,CAAD,CAAhB;AACA,eAAO;AACLC,UAAAA,WAAW,EAAEb,KAAK,CAACc,eAAN,CACX,oDADW,EAEX,OAFW,CADR;AAKLC,UAAAA,IAAI,EAAEN;AALD,SAAP;AAOD,OAXwB,EAYzB;AACEO,QAAAA,0BAA0B,EAAE;AAD9B,OAZyB,CAD7B;AAiBEC,MAAAA,SAAS,EAAEX,cAAc,CACvB,WADuB,EAEvB,CAAC;AAAEK,QAAAA;AAAF,OAAD,KAA0B;AACxBA,QAAAA,gBAAgB,CAAC,OAAO;AAAEC,UAAAA,UAAU,EAAE,CAAC,IAAD;AAAd,SAAP,CAAD,CAAhB;AACA,eAAO;AACLC,UAAAA,WAAW,EAAEb,KAAK,CAACc,eAAN,CACX,mDADW,EAEX,OAFW,CADR;AAKLC,UAAAA,IAAI,EAAEN;AALD,SAAP;AAOD,OAXsB,EAYvB;AACEO,QAAAA,0BAA0B,EAAE;AAD9B,OAZuB;AAjB3B,KAFW,EAoCV,mCAAkCX,IAAI,CAACE,IAAK,EApClC,CAAb;AAsCD,GA/CH,EAgDE,CAAC,wBAAD,CAhDF,EAiDE,EAjDF,EAkDE,CAAC,QAAD,CAlDF;AAoDD,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PageInfoStartEndCursor(builder) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const { extend, getTypeByName, inflection } = build;\n const { Self, fieldWithHooks } = context;\n if (Self.name !== inflection.builtin(\"PageInfo\")) {\n return fields;\n }\n const Cursor = getTypeByName(\"Cursor\");\n return extend(\n fields,\n {\n startCursor: fieldWithHooks(\n \"startCursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({ usesCursor: [true] }));\n return {\n description: build.wrapDescription(\n \"When paginating backwards, the cursor to continue.\",\n \"field\"\n ),\n type: Cursor,\n };\n },\n {\n isPageInfoStartCursorField: true,\n }\n ),\n endCursor: fieldWithHooks(\n \"endCursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({ usesCursor: [true] }));\n return {\n description: build.wrapDescription(\n \"When paginating forwards, the cursor to continue.\",\n \"field\"\n ),\n type: Cursor,\n };\n },\n {\n isPageInfoStartCursorField: true,\n }\n ),\n },\n `Adding startCursor/endCursor to ${Self.name}`\n );\n },\n [\"PageInfoStartEndCursor\"],\n [],\n [\"Cursor\"]\n );\n}: Plugin);\n"],"file":"PageInfoStartEndCursor.js"}
@@ -87,7 +87,7 @@ var PgAllRows = async function PgAllRows(builder, {
87
87
  getDataFromParsedResolveInfoFragment
88
88
  }) => {
89
89
  return {
90
- description: isConnection ? `Reads and enables pagination through a set of \`${tableTypeName}\`.` : `Reads a set of \`${tableTypeName}\`.`,
90
+ description: build.wrapDescription(isConnection ? `Reads and enables pagination through a set of \`${tableTypeName}\`.` : `Reads a set of \`${tableTypeName}\`.`, "field"),
91
91
  type: isConnection ? ConnectionType : new GraphQLList(new GraphQLNonNull(TableType)),
92
92
  args: {},
93
93
 
@@ -84,9 +84,12 @@ export default (async function PgAllRows(
84
84
  fieldName,
85
85
  ({ getDataFromParsedResolveInfoFragment }) => {
86
86
  return {
87
- description: isConnection
88
- ? `Reads and enables pagination through a set of \`${tableTypeName}\`.`
89
- : `Reads a set of \`${tableTypeName}\`.`,
87
+ description: build.wrapDescription(
88
+ isConnection
89
+ ? `Reads and enables pagination through a set of \`${tableTypeName}\`.`
90
+ : `Reads a set of \`${tableTypeName}\`.`,
91
+ "field"
92
+ ),
90
93
  type: isConnection
91
94
  ? ConnectionType
92
95
  : new GraphQLList(new GraphQLNonNull(TableType)),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgAllRows.js"],"names":["PgAllRows","builder","pgViewUniqueKey","pgSimpleCollections","subscriptions","hook","fields","build","context","parseResolveInfo","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgSql","sql","pgIntrospectionResultsByKind","introspectionResultsByKind","inflection","graphql","GraphQLList","GraphQLNonNull","pgQueryFromResolveData","queryFromResolveData","pgAddStartEndCursor","addStartEndCursor","pgOmit","omit","pgPrepareAndRun","fieldWithHooks","scope","isRootQuery","class","reduce","memo","table","isSelectable","namespace","TableType","type","id","tableTypeName","name","ConnectionType","connection","Error","attributes","primaryKeyConstraint","primaryKeys","keyAttributes","isView","t","classKind","viewUniqueKey","tags","uniqueKey","uniqueIdAttribute","find","attr","undefined","namespaceName","schema","sqlFullTableName","identifier","makeField","isConnection","fieldName","allRows","allRowsSimple","getDataFromParsedResolveInfoFragment","description","args","resolve","parent","resolveContext","resolveInfo","pgClient","parsedResolveInfoFragment","resolveData","returnType","checkerGenerator","query","useAsterisk","canUseAsterisk","withPaginationAsFields","queryBuilder","makeLiveCollection","_checkerGenerator","selectIdentifiers","beforeLock","isOrderUnique","data","cursorPrefix","forEach","key","orderBy","fragment","getTableAlias","setOrderIsUnique","rootValue","text","values","compile","debugSql","enabled","result","liveCollection","checker","rows","row","liveRecord","__identifiers","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospection","simpleCollections","hasConnections","hasSimpleCollections"],"mappings":"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","sourcesContent":["// @flow\n\nimport type { Plugin } from \"graphile-build\";\nimport debugSql from \"./debugSql\";\n\nexport default (async function PgAllRows(\n builder,\n { pgViewUniqueKey, pgSimpleCollections, subscriptions }\n) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n parseResolveInfo,\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n inflection,\n graphql: { GraphQLList, GraphQLNonNull },\n pgQueryFromResolveData: queryFromResolveData,\n pgAddStartEndCursor: addStartEndCursor,\n pgOmit: omit,\n pgPrepareAndRun,\n } = build;\n const {\n fieldWithHooks,\n scope: { isRootQuery },\n } = context;\n if (!isRootQuery) {\n return fields;\n }\n return extend(\n fields,\n introspectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.isSelectable) return memo;\n if (!table.namespace) return memo;\n if (omit(table, \"all\")) return memo;\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableType) {\n return memo;\n }\n const tableTypeName = TableType.name;\n const ConnectionType = getTypeByName(\n inflection.connection(TableType.name)\n );\n if (!TableType) {\n throw new Error(\n `Could not find GraphQL type for table '${table.name}'`\n );\n }\n const attributes = table.attributes;\n const primaryKeyConstraint = table.primaryKeyConstraint;\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const isView = t => t.classKind === \"v\";\n const viewUniqueKey = table.tags.uniqueKey || pgViewUniqueKey;\n const uniqueIdAttribute = viewUniqueKey\n ? attributes.find(attr => attr.name === viewUniqueKey)\n : undefined;\n if (isView && table.tags.uniqueKey && !uniqueIdAttribute) {\n throw new Error(\n `Could not find the named unique key '${table.tags.uniqueKey}' on view '${table.namespaceName}.${table.name}'`\n );\n }\n if (!ConnectionType) {\n throw new Error(\n `Could not find GraphQL connection type for table '${table.name}'`\n );\n }\n const schema = table.namespace;\n const sqlFullTableName = sql.identifier(schema.name, table.name);\n function makeField(isConnection) {\n const fieldName = isConnection\n ? inflection.allRows(table)\n : inflection.allRowsSimple(table);\n memo[fieldName] = fieldWithHooks(\n fieldName,\n ({ getDataFromParsedResolveInfoFragment }) => {\n return {\n description: isConnection\n ? `Reads and enables pagination through a set of \\`${tableTypeName}\\`.`\n : `Reads a set of \\`${tableTypeName}\\`.`,\n type: isConnection\n ? ConnectionType\n : new GraphQLList(new GraphQLNonNull(TableType)),\n args: {},\n async resolve(parent, args, resolveContext, resolveInfo) {\n const { pgClient } = resolveContext;\n const parsedResolveInfoFragment = parseResolveInfo(\n resolveInfo\n );\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n resolveInfo.returnType\n );\n let checkerGenerator;\n const query = queryFromResolveData(\n sqlFullTableName,\n undefined,\n resolveData,\n {\n useAsterisk: table.canUseAsterisk,\n withPaginationAsFields: isConnection,\n },\n queryBuilder => {\n if (subscriptions) {\n queryBuilder.makeLiveCollection(\n table,\n _checkerGenerator => {\n checkerGenerator = _checkerGenerator;\n }\n );\n }\n if (primaryKeys) {\n if (subscriptions && !isConnection) {\n queryBuilder.selectIdentifiers(table);\n }\n queryBuilder.beforeLock(\"orderBy\", () => {\n if (!queryBuilder.isOrderUnique(false)) {\n // Order by PK if no order specified\n queryBuilder.data.cursorPrefix = [\n \"primary_key_asc\",\n ];\n primaryKeys.forEach(key => {\n queryBuilder.orderBy(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )}`,\n true\n );\n });\n queryBuilder.setOrderIsUnique();\n }\n });\n } else if (isView(table) && !!uniqueIdAttribute) {\n queryBuilder.beforeLock(\"orderBy\", () => {\n if (!queryBuilder.isOrderUnique(false)) {\n queryBuilder.data.cursorPrefix = [\n \"view_unique_key_asc\",\n ];\n queryBuilder.orderBy(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n uniqueIdAttribute.name\n )}`,\n true\n );\n queryBuilder.setOrderIsUnique();\n }\n });\n }\n },\n resolveContext,\n resolveInfo.rootValue\n );\n const { text, values } = sql.compile(query);\n if (debugSql.enabled) debugSql(text);\n const result = await pgPrepareAndRun(\n pgClient,\n text,\n values\n );\n\n const liveCollection =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveCollection;\n if (subscriptions && liveCollection && checkerGenerator) {\n const checker = checkerGenerator();\n liveCollection(\"pg\", table, checker);\n }\n\n if (isConnection) {\n const {\n rows: [row],\n } = result;\n return addStartEndCursor(row);\n } else {\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n if (\n subscriptions &&\n !isConnection &&\n primaryKeys &&\n liveRecord\n ) {\n result.rows.forEach(\n row =>\n row && liveRecord(\"pg\", table, row.__identifiers)\n );\n }\n return result.rows;\n }\n },\n };\n },\n {\n isPgFieldConnection: isConnection,\n isPgFieldSimpleCollection: !isConnection,\n pgFieldIntrospection: table,\n }\n );\n }\n const simpleCollections =\n table.tags.simpleCollections || pgSimpleCollections;\n const hasConnections = simpleCollections !== \"only\";\n const hasSimpleCollections =\n simpleCollections === \"only\" || simpleCollections === \"both\";\n if (TableType && ConnectionType && hasConnections) {\n makeField(true);\n }\n if (TableType && hasSimpleCollections) {\n makeField(false);\n }\n return memo;\n }, {}),\n `Adding 'all*' relations to root Query`\n );\n },\n [\"PgAllRows\"],\n [],\n [\"PgTables\"]\n );\n}: Plugin);\n"],"file":"PgAllRows.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgAllRows.js"],"names":["PgAllRows","builder","pgViewUniqueKey","pgSimpleCollections","subscriptions","hook","fields","build","context","parseResolveInfo","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgSql","sql","pgIntrospectionResultsByKind","introspectionResultsByKind","inflection","graphql","GraphQLList","GraphQLNonNull","pgQueryFromResolveData","queryFromResolveData","pgAddStartEndCursor","addStartEndCursor","pgOmit","omit","pgPrepareAndRun","fieldWithHooks","scope","isRootQuery","class","reduce","memo","table","isSelectable","namespace","TableType","type","id","tableTypeName","name","ConnectionType","connection","Error","attributes","primaryKeyConstraint","primaryKeys","keyAttributes","isView","t","classKind","viewUniqueKey","tags","uniqueKey","uniqueIdAttribute","find","attr","undefined","namespaceName","schema","sqlFullTableName","identifier","makeField","isConnection","fieldName","allRows","allRowsSimple","getDataFromParsedResolveInfoFragment","description","wrapDescription","args","resolve","parent","resolveContext","resolveInfo","pgClient","parsedResolveInfoFragment","resolveData","returnType","checkerGenerator","query","useAsterisk","canUseAsterisk","withPaginationAsFields","queryBuilder","makeLiveCollection","_checkerGenerator","selectIdentifiers","beforeLock","isOrderUnique","data","cursorPrefix","forEach","key","orderBy","fragment","getTableAlias","setOrderIsUnique","rootValue","text","values","compile","debugSql","enabled","result","liveCollection","checker","rows","row","liveRecord","__identifiers","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospection","simpleCollections","hasConnections","hasSimpleCollections"],"mappings":";;;;;;;AAGA;;;;IAE+BA,S,GAAf,eAAeA,SAAf,CACdC,OADc,EAEd;AAAEC,EAAAA,eAAF;AAAmBC,EAAAA,mBAAnB;AAAwCC,EAAAA;AAAxC,CAFc,EAGd;AACAH,EAAAA,OAAO,CAACI,IAAR,CACE,0BADF,EAEE,CAACC,MAAD,EAASC,KAAT,EAAgBC,OAAhB,KAA4B;AAC1B,UAAM;AACJC,MAAAA,gBADI;AAEJC,MAAAA,MAFI;AAGJC,MAAAA,aAHI;AAIJC,MAAAA,+BAJI;AAKJC,MAAAA,KAAK,EAAEC,GALH;AAMJC,MAAAA,4BAA4B,EAAEC,0BAN1B;AAOJC,MAAAA,UAPI;AAQJC,MAAAA,OAAO,EAAE;AAAEC,QAAAA,WAAF;AAAeC,QAAAA;AAAf,OARL;AASJC,MAAAA,sBAAsB,EAAEC,oBATpB;AAUJC,MAAAA,mBAAmB,EAAEC,iBAVjB;AAWJC,MAAAA,MAAM,EAAEC,IAXJ;AAYJC,MAAAA;AAZI,QAaFpB,KAbJ;AAcA,UAAM;AACJqB,MAAAA,cADI;AAEJC,MAAAA,KAAK,EAAE;AAAEC,QAAAA;AAAF;AAFH,QAGFtB,OAHJ;;AAIA,QAAI,CAACsB,WAAL,EAAkB;AAChB,aAAOxB,MAAP;AACD;;AACD,WAAOI,MAAM,CACXJ,MADW,EAEXU,0BAA0B,CAACe,KAA3B,CAAiCC,MAAjC,CAAwC,CAACC,IAAD,EAAOC,KAAP,KAAiB;AACvD;AACA,UAAI,CAACA,KAAK,CAACC,YAAX,EAAyB,OAAOF,IAAP;AACzB,UAAI,CAACC,KAAK,CAACE,SAAX,EAAsB,OAAOH,IAAP;AACtB,UAAIP,IAAI,CAACQ,KAAD,EAAQ,KAAR,CAAR,EAAwB,OAAOD,IAAP;AAExB,YAAMI,SAAS,GAAGzB,+BAA+B,CAC/CsB,KAAK,CAACI,IAAN,CAAWC,EADoC,EAE/C,IAF+C,CAAjD;;AAIA,UAAI,CAACF,SAAL,EAAgB;AACd,eAAOJ,IAAP;AACD;;AACD,YAAMO,aAAa,GAAGH,SAAS,CAACI,IAAhC;AACA,YAAMC,cAAc,GAAG/B,aAAa,CAClCM,UAAU,CAAC0B,UAAX,CAAsBN,SAAS,CAACI,IAAhC,CADkC,CAApC;;AAGA,UAAI,CAACJ,SAAL,EAAgB;AACd,cAAM,IAAIO,KAAJ,CACH,0CAAyCV,KAAK,CAACO,IAAK,GADjD,CAAN;AAGD;;AACD,YAAMI,UAAU,GAAGX,KAAK,CAACW,UAAzB;AACA,YAAMC,oBAAoB,GAAGZ,KAAK,CAACY,oBAAnC;AACA,YAAMC,WAAW,GACfD,oBAAoB,IAAIA,oBAAoB,CAACE,aAD/C;;AAEA,YAAMC,MAAM,GAAGC,CAAC,IAAIA,CAAC,CAACC,SAAF,KAAgB,GAApC;;AACA,YAAMC,aAAa,GAAGlB,KAAK,CAACmB,IAAN,CAAWC,SAAX,IAAwBpD,eAA9C;AACA,YAAMqD,iBAAiB,GAAGH,aAAa,GACnCP,UAAU,CAACW,IAAX,CAAgBC,IAAI,IAAIA,IAAI,CAAChB,IAAL,KAAcW,aAAtC,CADmC,GAEnCM,SAFJ;;AAGA,UAAIT,MAAM,IAAIf,KAAK,CAACmB,IAAN,CAAWC,SAArB,IAAkC,CAACC,iBAAvC,EAA0D;AACxD,cAAM,IAAIX,KAAJ,CACH,wCAAuCV,KAAK,CAACmB,IAAN,CAAWC,SAAU,cAAapB,KAAK,CAACyB,aAAc,IAAGzB,KAAK,CAACO,IAAK,GADxG,CAAN;AAGD;;AACD,UAAI,CAACC,cAAL,EAAqB;AACnB,cAAM,IAAIE,KAAJ,CACH,qDAAoDV,KAAK,CAACO,IAAK,GAD5D,CAAN;AAGD;;AACD,YAAMmB,MAAM,GAAG1B,KAAK,CAACE,SAArB;AACA,YAAMyB,gBAAgB,GAAG/C,GAAG,CAACgD,UAAJ,CAAeF,MAAM,CAACnB,IAAtB,EAA4BP,KAAK,CAACO,IAAlC,CAAzB;;AACA,eAASsB,SAAT,CAAmBC,YAAnB,EAAiC;AAC/B,cAAMC,SAAS,GAAGD,YAAY,GAC1B/C,UAAU,CAACiD,OAAX,CAAmBhC,KAAnB,CAD0B,GAE1BjB,UAAU,CAACkD,aAAX,CAAyBjC,KAAzB,CAFJ;AAGAD,QAAAA,IAAI,CAACgC,SAAD,CAAJ,GAAkBrC,cAAc,CAC9BqC,SAD8B,EAE9B,CAAC;AAAEG,UAAAA;AAAF,SAAD,KAA8C;AAC5C,iBAAO;AACLC,YAAAA,WAAW,EAAE9D,KAAK,CAAC+D,eAAN,CACXN,YAAY,GACP,mDAAkDxB,aAAc,KADzD,GAEP,oBAAmBA,aAAc,KAH3B,EAIX,OAJW,CADR;AAOLF,YAAAA,IAAI,EAAE0B,YAAY,GACdtB,cADc,GAEd,IAAIvB,WAAJ,CAAgB,IAAIC,cAAJ,CAAmBiB,SAAnB,CAAhB,CATC;AAULkC,YAAAA,IAAI,EAAE,EAVD;;AAWL,kBAAMC,OAAN,CAAcC,MAAd,EAAsBF,IAAtB,EAA4BG,cAA5B,EAA4CC,WAA5C,EAAyD;AACvD,oBAAM;AAAEC,gBAAAA;AAAF,kBAAeF,cAArB;AACA,oBAAMG,yBAAyB,GAAGpE,gBAAgB,CAChDkE,WADgD,CAAlD;AAGAE,cAAAA,yBAAyB,CAACN,IAA1B,GAAiCA,IAAjC,CALuD,CAKhB;;AACvC,oBAAMO,WAAW,GAAGV,oCAAoC,CACtDS,yBADsD,EAEtDF,WAAW,CAACI,UAF0C,CAAxD;AAIA,kBAAIC,gBAAJ;AACA,oBAAMC,KAAK,GAAG3D,oBAAoB,CAChCuC,gBADgC,EAEhCH,SAFgC,EAGhCoB,WAHgC,EAIhC;AACEI,gBAAAA,WAAW,EAAEhD,KAAK,CAACiD,cADrB;AAEEC,gBAAAA,sBAAsB,EAAEpB;AAF1B,eAJgC,EAQhCqB,YAAY,IAAI;AACd,oBAAIjF,aAAJ,EAAmB;AACjBiF,kBAAAA,YAAY,CAACC,kBAAb,CACEpD,KADF,EAEEqD,iBAAiB,IAAI;AACnBP,oBAAAA,gBAAgB,GAAGO,iBAAnB;AACD,mBAJH;AAMD;;AACD,oBAAIxC,WAAJ,EAAiB;AACf,sBAAI3C,aAAa,IAAI,CAAC4D,YAAtB,EAAoC;AAClCqB,oBAAAA,YAAY,CAACG,iBAAb,CAA+BtD,KAA/B;AACD;;AACDmD,kBAAAA,YAAY,CAACI,UAAb,CAAwB,SAAxB,EAAmC,MAAM;AACvC,wBAAI,CAACJ,YAAY,CAACK,aAAb,CAA2B,KAA3B,CAAL,EAAwC;AACtC;AACAL,sBAAAA,YAAY,CAACM,IAAb,CAAkBC,YAAlB,GAAiC,CAC/B,iBAD+B,CAAjC;AAGA7C,sBAAAA,WAAW,CAAC8C,OAAZ,CAAoBC,GAAG,IAAI;AACzBT,wBAAAA,YAAY,CAACU,OAAb,CACEjF,GAAG,CAACkF,QAAS,GAAEX,YAAY,CAACY,aAAb,EAA6B,IAAGnF,GAAG,CAACgD,UAAJ,CAC7CgC,GAAG,CAACrD,IADyC,CAE7C,EAHJ,EAIE,IAJF;AAMD,uBAPD;AAQA4C,sBAAAA,YAAY,CAACa,gBAAb;AACD;AACF,mBAhBD;AAiBD,iBArBD,MAqBO,IAAIjD,MAAM,CAACf,KAAD,CAAN,IAAiB,CAAC,CAACqB,iBAAvB,EAA0C;AAC/C8B,kBAAAA,YAAY,CAACI,UAAb,CAAwB,SAAxB,EAAmC,MAAM;AACvC,wBAAI,CAACJ,YAAY,CAACK,aAAb,CAA2B,KAA3B,CAAL,EAAwC;AACtCL,sBAAAA,YAAY,CAACM,IAAb,CAAkBC,YAAlB,GAAiC,CAC/B,qBAD+B,CAAjC;AAGAP,sBAAAA,YAAY,CAACU,OAAb,CACEjF,GAAG,CAACkF,QAAS,GAAEX,YAAY,CAACY,aAAb,EAA6B,IAAGnF,GAAG,CAACgD,UAAJ,CAC7CP,iBAAiB,CAACd,IAD2B,CAE7C,EAHJ,EAIE,IAJF;AAMA4C,sBAAAA,YAAY,CAACa,gBAAb;AACD;AACF,mBAbD;AAcD;AACF,eAtD+B,EAuDhCxB,cAvDgC,EAwDhCC,WAAW,CAACwB,SAxDoB,CAAlC;AA0DA,oBAAM;AAAEC,gBAAAA,IAAF;AAAQC,gBAAAA;AAAR,kBAAmBvF,GAAG,CAACwF,OAAJ,CAAYrB,KAAZ,CAAzB;AACA,kBAAIsB,kBAASC,OAAb,EAAsB,uBAASJ,IAAT;AACtB,oBAAMK,MAAM,GAAG,MAAM9E,eAAe,CAClCiD,QADkC,EAElCwB,IAFkC,EAGlCC,MAHkC,CAApC;AAMA,oBAAMK,cAAc,GAClB/B,WAAW,CAACwB,SAAZ,IACAxB,WAAW,CAACwB,SAAZ,CAAsBO,cAFxB;;AAGA,kBAAItG,aAAa,IAAIsG,cAAjB,IAAmC1B,gBAAvC,EAAyD;AACvD,sBAAM2B,OAAO,GAAG3B,gBAAgB,EAAhC;AACA0B,gBAAAA,cAAc,CAAC,IAAD,EAAOxE,KAAP,EAAcyE,OAAd,CAAd;AACD;;AAED,kBAAI3C,YAAJ,EAAkB;AAChB,sBAAM;AACJ4C,kBAAAA,IAAI,EAAE,CAACC,GAAD;AADF,oBAEFJ,MAFJ;AAGA,uBAAOjF,iBAAiB,CAACqF,GAAD,CAAxB;AACD,eALD,MAKO;AACL,sBAAMC,UAAU,GACdnC,WAAW,CAACwB,SAAZ,IACAxB,WAAW,CAACwB,SAAZ,CAAsBW,UAFxB;;AAGA,oBACE1G,aAAa,IACb,CAAC4D,YADD,IAEAjB,WAFA,IAGA+D,UAJF,EAKE;AACAL,kBAAAA,MAAM,CAACG,IAAP,CAAYf,OAAZ,CACEgB,GAAG,IACDA,GAAG,IAAIC,UAAU,CAAC,IAAD,EAAO5E,KAAP,EAAc2E,GAAG,CAACE,aAAlB,CAFrB;AAID;;AACD,uBAAON,MAAM,CAACG,IAAd;AACD;AACF;;AAtHI,WAAP;AAwHD,SA3H6B,EA4H9B;AACEI,UAAAA,mBAAmB,EAAEhD,YADvB;AAEEiD,UAAAA,yBAAyB,EAAE,CAACjD,YAF9B;AAGEkD,UAAAA,oBAAoB,EAAEhF;AAHxB,SA5H8B,CAAhC;AAkID;;AACD,YAAMiF,iBAAiB,GACrBjF,KAAK,CAACmB,IAAN,CAAW8D,iBAAX,IAAgChH,mBADlC;AAEA,YAAMiH,cAAc,GAAGD,iBAAiB,KAAK,MAA7C;AACA,YAAME,oBAAoB,GACxBF,iBAAiB,KAAK,MAAtB,IAAgCA,iBAAiB,KAAK,MADxD;;AAEA,UAAI9E,SAAS,IAAIK,cAAb,IAA+B0E,cAAnC,EAAmD;AACjDrD,QAAAA,SAAS,CAAC,IAAD,CAAT;AACD;;AACD,UAAI1B,SAAS,IAAIgF,oBAAjB,EAAuC;AACrCtD,QAAAA,SAAS,CAAC,KAAD,CAAT;AACD;;AACD,aAAO9B,IAAP;AACD,KA9LD,EA8LG,EA9LH,CAFW,EAiMV,uCAjMU,CAAb;AAmMD,GA3NH,EA4NE,CAAC,WAAD,CA5NF,EA6NE,EA7NF,EA8NE,CAAC,UAAD,CA9NF;AAgOD,C","sourcesContent":["// @flow\n\nimport type { Plugin } from \"graphile-build\";\nimport debugSql from \"./debugSql\";\n\nexport default (async function PgAllRows(\n builder,\n { pgViewUniqueKey, pgSimpleCollections, subscriptions }\n) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n parseResolveInfo,\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n inflection,\n graphql: { GraphQLList, GraphQLNonNull },\n pgQueryFromResolveData: queryFromResolveData,\n pgAddStartEndCursor: addStartEndCursor,\n pgOmit: omit,\n pgPrepareAndRun,\n } = build;\n const {\n fieldWithHooks,\n scope: { isRootQuery },\n } = context;\n if (!isRootQuery) {\n return fields;\n }\n return extend(\n fields,\n introspectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.isSelectable) return memo;\n if (!table.namespace) return memo;\n if (omit(table, \"all\")) return memo;\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableType) {\n return memo;\n }\n const tableTypeName = TableType.name;\n const ConnectionType = getTypeByName(\n inflection.connection(TableType.name)\n );\n if (!TableType) {\n throw new Error(\n `Could not find GraphQL type for table '${table.name}'`\n );\n }\n const attributes = table.attributes;\n const primaryKeyConstraint = table.primaryKeyConstraint;\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const isView = t => t.classKind === \"v\";\n const viewUniqueKey = table.tags.uniqueKey || pgViewUniqueKey;\n const uniqueIdAttribute = viewUniqueKey\n ? attributes.find(attr => attr.name === viewUniqueKey)\n : undefined;\n if (isView && table.tags.uniqueKey && !uniqueIdAttribute) {\n throw new Error(\n `Could not find the named unique key '${table.tags.uniqueKey}' on view '${table.namespaceName}.${table.name}'`\n );\n }\n if (!ConnectionType) {\n throw new Error(\n `Could not find GraphQL connection type for table '${table.name}'`\n );\n }\n const schema = table.namespace;\n const sqlFullTableName = sql.identifier(schema.name, table.name);\n function makeField(isConnection) {\n const fieldName = isConnection\n ? inflection.allRows(table)\n : inflection.allRowsSimple(table);\n memo[fieldName] = fieldWithHooks(\n fieldName,\n ({ getDataFromParsedResolveInfoFragment }) => {\n return {\n description: build.wrapDescription(\n isConnection\n ? `Reads and enables pagination through a set of \\`${tableTypeName}\\`.`\n : `Reads a set of \\`${tableTypeName}\\`.`,\n \"field\"\n ),\n type: isConnection\n ? ConnectionType\n : new GraphQLList(new GraphQLNonNull(TableType)),\n args: {},\n async resolve(parent, args, resolveContext, resolveInfo) {\n const { pgClient } = resolveContext;\n const parsedResolveInfoFragment = parseResolveInfo(\n resolveInfo\n );\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n resolveInfo.returnType\n );\n let checkerGenerator;\n const query = queryFromResolveData(\n sqlFullTableName,\n undefined,\n resolveData,\n {\n useAsterisk: table.canUseAsterisk,\n withPaginationAsFields: isConnection,\n },\n queryBuilder => {\n if (subscriptions) {\n queryBuilder.makeLiveCollection(\n table,\n _checkerGenerator => {\n checkerGenerator = _checkerGenerator;\n }\n );\n }\n if (primaryKeys) {\n if (subscriptions && !isConnection) {\n queryBuilder.selectIdentifiers(table);\n }\n queryBuilder.beforeLock(\"orderBy\", () => {\n if (!queryBuilder.isOrderUnique(false)) {\n // Order by PK if no order specified\n queryBuilder.data.cursorPrefix = [\n \"primary_key_asc\",\n ];\n primaryKeys.forEach(key => {\n queryBuilder.orderBy(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )}`,\n true\n );\n });\n queryBuilder.setOrderIsUnique();\n }\n });\n } else if (isView(table) && !!uniqueIdAttribute) {\n queryBuilder.beforeLock(\"orderBy\", () => {\n if (!queryBuilder.isOrderUnique(false)) {\n queryBuilder.data.cursorPrefix = [\n \"view_unique_key_asc\",\n ];\n queryBuilder.orderBy(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n uniqueIdAttribute.name\n )}`,\n true\n );\n queryBuilder.setOrderIsUnique();\n }\n });\n }\n },\n resolveContext,\n resolveInfo.rootValue\n );\n const { text, values } = sql.compile(query);\n if (debugSql.enabled) debugSql(text);\n const result = await pgPrepareAndRun(\n pgClient,\n text,\n values\n );\n\n const liveCollection =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveCollection;\n if (subscriptions && liveCollection && checkerGenerator) {\n const checker = checkerGenerator();\n liveCollection(\"pg\", table, checker);\n }\n\n if (isConnection) {\n const {\n rows: [row],\n } = result;\n return addStartEndCursor(row);\n } else {\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n if (\n subscriptions &&\n !isConnection &&\n primaryKeys &&\n liveRecord\n ) {\n result.rows.forEach(\n row =>\n row && liveRecord(\"pg\", table, row.__identifiers)\n );\n }\n return result.rows;\n }\n },\n };\n },\n {\n isPgFieldConnection: isConnection,\n isPgFieldSimpleCollection: !isConnection,\n pgFieldIntrospection: table,\n }\n );\n }\n const simpleCollections =\n table.tags.simpleCollections || pgSimpleCollections;\n const hasConnections = simpleCollections !== \"only\";\n const hasSimpleCollections =\n simpleCollections === \"only\" || simpleCollections === \"both\";\n if (TableType && ConnectionType && hasConnections) {\n makeField(true);\n }\n if (TableType && hasSimpleCollections) {\n makeField(false);\n }\n return memo;\n }, {}),\n `Adding 'all*' relations to root Query`\n );\n },\n [\"PgAllRows\"],\n [],\n [\"PgTables\"]\n );\n}: Plugin);\n"],"file":"PgAllRows.js"}
@@ -158,7 +158,7 @@ var PgBackwardRelationPlugin = function PgBackwardRelationPlugin(builder, {
158
158
  };
159
159
  });
160
160
  return {
161
- description: constraint.tags.backwardDescription || `Reads a single \`${tableTypeName}\` that is related to this \`${foreignTableTypeName}\`.`,
161
+ description: constraint.tags.backwardDescription || build.wrapDescription(`Reads a single \`${tableTypeName}\` that is related to this \`${foreignTableTypeName}\`.`, "field"),
162
162
  type: gqlTableType,
163
163
  args: {},
164
164
  resolve: (data, _args, resolveContext, resolveInfo) => {
@@ -257,7 +257,7 @@ var PgBackwardRelationPlugin = function PgBackwardRelationPlugin(builder, {
257
257
  const ConnectionType = getTypeByName(inflection.connection(gqlTableType.name));
258
258
  const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);
259
259
  return {
260
- description: constraint.tags.backwardDescription || `Reads and enables pagination through a set of \`${tableTypeName}\`.`,
260
+ description: constraint.tags.backwardDescription || build.wrapDescription(`Reads and enables pagination through a set of \`${tableTypeName}\`.`, "field"),
261
261
  type: isConnection ? new GraphQLNonNull(ConnectionType) : new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(TableType))),
262
262
  args: {},
263
263
  resolve: (data, _args, resolveContext, resolveInfo) => {
@@ -213,7 +213,10 @@ export default (function PgBackwardRelationPlugin(
213
213
  return {
214
214
  description:
215
215
  constraint.tags.backwardDescription ||
216
- `Reads a single \`${tableTypeName}\` that is related to this \`${foreignTableTypeName}\`.`,
216
+ build.wrapDescription(
217
+ `Reads a single \`${tableTypeName}\` that is related to this \`${foreignTableTypeName}\`.`,
218
+ "field"
219
+ ),
217
220
  type: gqlTableType,
218
221
  args: {},
219
222
  resolve: (data, _args, resolveContext, resolveInfo) => {
@@ -392,7 +395,10 @@ export default (function PgBackwardRelationPlugin(
392
395
  return {
393
396
  description:
394
397
  constraint.tags.backwardDescription ||
395
- `Reads and enables pagination through a set of \`${tableTypeName}\`.`,
398
+ build.wrapDescription(
399
+ `Reads and enables pagination through a set of \`${tableTypeName}\`.`,
400
+ "field"
401
+ ),
396
402
  type: isConnection
397
403
  ? new GraphQLNonNull(ConnectionType)
398
404
  : new GraphQLNonNull(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/PgBackwardRelationPlugin.js"],"names":["debug","OMIT","DEPRECATED","ONLY","PgBackwardRelationPlugin","builder","pgLegacyRelations","pgSimpleCollections","subscriptions","legacyRelationMode","only","deprecated","hook","fields","build","context","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","getSafeAliasFromResolveInfo","getSafeAliasFromAlias","graphql","GraphQLNonNull","GraphQLList","inflection","pgQueryFromResolveData","queryFromResolveData","pgAddStartEndCursor","addStartEndCursor","pgOmit","omit","sqlCommentByAddingTags","describePgEntity","scope","isPgRowType","pgIntrospection","foreignTable","fieldWithHooks","Self","kind","foreignKeyConstraints","foreignConstraints","filter","con","type","foreignTableTypeName","tableType","gqlForeignTableType","id","reduce","memo","constraint","table","classById","classId","Error","name","isSelectable","tableTypeName","gqlTableType","schema","namespace","keys","keyAttributes","foreignKeys","foreignKeyAttributes","every","_","some","key","isUnique","constraints","find","c","keyAttributeNums","length","n","i","num","isDeprecated","singleRelationFieldName","singleRelationByKeysBackwards","primaryKeyConstraint","primaryKeys","shouldAddSingleRelation","shouldAddManyRelation","getDataFromParsedResolveInfoFragment","addDataGenerator","sqlFrom","identifier","parsedResolveInfoFragment","pgQuery","queryBuilder","select","resolveData","tableAlias","Symbol","foreignTableAlias","getTableAlias","query","useAsterisk","asJson","addNullCase","withPagination","innerQueryBuilder","parentQueryBuilder","selectIdentifiers","makeLiveCollection","addLiveCondition","data","record","fragment","forEach","where","rootValue","alias","description","tags","backwardDescription","args","resolve","_args","resolveContext","resolveInfo","safeAlias","liveRecord","liveCollection","liveConditions","__live","__id","rest","condition","checker","__identifiers","pgFieldIntrospection","isPgBackwardSingleRelationField","foreignSingleFieldName","makeFields","isConnection","manyRelationFieldName","manyRelationByKeys","manyRelationByKeysSimple","queryOptions","canUseAsterisk","withPaginationAsFields","asJsonAggregate","ConnectionType","TableType","beforeLock","isOrderUnique","cursorPrefix","orderBy","setOrderIsUnique","connection","records","r","deprecationReason","isPgFieldConnection","isPgFieldSimpleCollection","isPgBackwardRelationField","simpleCollections","hasConnections","hasSimpleCollections"],"mappings":"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","sourcesContent":["// @flow\nimport debugFactory from \"debug\";\n\nimport type { Plugin } from \"graphile-build\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nconst OMIT = 0;\nconst DEPRECATED = 1;\nconst ONLY = 2;\n\nexport default (function PgBackwardRelationPlugin(\n builder,\n { pgLegacyRelations, pgSimpleCollections, subscriptions }\n) {\n const legacyRelationMode =\n {\n only: ONLY,\n deprecated: DEPRECATED,\n }[pgLegacyRelations] || OMIT;\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n getSafeAliasFromResolveInfo,\n getSafeAliasFromAlias,\n graphql: { GraphQLNonNull, GraphQLList },\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgAddStartEndCursor: addStartEndCursor,\n pgOmit: omit,\n sqlCommentByAddingTags,\n describePgEntity,\n } = build;\n const {\n scope: { isPgRowType, pgIntrospection: foreignTable },\n fieldWithHooks,\n Self,\n } = context;\n if (!isPgRowType || !foreignTable || foreignTable.kind !== \"class\") {\n return fields;\n }\n // This is a relation in which WE are foreign\n const foreignKeyConstraints = foreignTable.foreignConstraints.filter(\n con => con.type === \"f\"\n );\n const foreignTableTypeName = inflection.tableType(foreignTable);\n const gqlForeignTableType = pgGetGqlTypeByTypeIdAndModifier(\n foreignTable.type.id,\n null\n );\n if (!gqlForeignTableType) {\n debug(\n `Could not determine type for foreign table with id ${foreignTable.type.id}`\n );\n return fields;\n }\n\n return extend(\n fields,\n foreignKeyConstraints.reduce((memo, constraint) => {\n if (omit(constraint, \"read\")) {\n return memo;\n }\n const table =\n introspectionResultsByKind.classById[constraint.classId];\n if (!table) {\n throw new Error(\n `Could not find the table that referenced us (constraint: ${constraint.name})`\n );\n }\n if (!table.isSelectable) {\n // Could be a composite type\n return memo;\n }\n const tableTypeName = inflection.tableType(table);\n const gqlTableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!gqlTableType) {\n debug(\n `Could not determine type for table with id ${constraint.classId}`\n );\n return memo;\n }\n const schema = table.namespace;\n\n const keys = constraint.keyAttributes;\n const foreignKeys = constraint.foreignKeyAttributes;\n if (!keys.every(_ => _) || !foreignKeys.every(_ => _)) {\n throw new Error(\"Could not find key columns!\");\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n if (foreignKeys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n const isUnique = !!table.constraints.find(\n c =>\n (c.type === \"p\" || c.type === \"u\") &&\n c.keyAttributeNums.length === keys.length &&\n c.keyAttributeNums.every((n, i) => keys[i].num === n)\n );\n\n const isDeprecated = isUnique && legacyRelationMode === DEPRECATED;\n\n const singleRelationFieldName = isUnique\n ? inflection.singleRelationByKeysBackwards(\n keys,\n table,\n foreignTable,\n constraint\n )\n : null;\n\n const primaryKeyConstraint = table.primaryKeyConstraint;\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n\n const shouldAddSingleRelation =\n isUnique && legacyRelationMode !== ONLY;\n\n const shouldAddManyRelation =\n !isUnique ||\n legacyRelationMode === DEPRECATED ||\n legacyRelationMode === ONLY;\n\n if (\n shouldAddSingleRelation &&\n !omit(table, \"read\") &&\n singleRelationFieldName\n ) {\n memo = extend(\n memo,\n {\n [singleRelationFieldName]: fieldWithHooks(\n singleRelationFieldName,\n ({\n getDataFromParsedResolveInfoFragment,\n addDataGenerator,\n }) => {\n const sqlFrom = sql.identifier(schema.name, table.name);\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(() => {\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n gqlTableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias = queryBuilder.getTableAlias();\n const query = queryFromResolveData(\n sqlFrom,\n tableAlias,\n resolveData,\n {\n useAsterisk: false, // Because it's only a single relation, no need\n asJson: true,\n addNullCase: true,\n withPagination: false,\n },\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder = queryBuilder;\n if (\n subscriptions &&\n table.primaryKeyConstraint\n ) {\n innerQueryBuilder.selectIdentifiers(table);\n innerQueryBuilder.makeLiveCollection(table);\n innerQueryBuilder.addLiveCondition(\n data => record => {\n return keys.every(\n key =>\n record[key.name] === data[key.name]\n );\n },\n keys.reduce((memo, key, i) => {\n memo[\n key.name\n ] = sql.fragment`${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`;\n return memo;\n }, {})\n );\n }\n keys.forEach((key, i) => {\n innerQueryBuilder.where(\n sql.fragment`${tableAlias}.${sql.identifier(\n key.name\n )} = ${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`\n );\n });\n },\n queryBuilder.context,\n queryBuilder.rootValue\n );\n return sql.fragment`(${query})`;\n }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias));\n },\n };\n });\n return {\n description:\n constraint.tags.backwardDescription ||\n `Reads a single \\`${tableTypeName}\\` that is related to this \\`${foreignTableTypeName}\\`.`,\n type: gqlTableType,\n args: {},\n resolve: (data, _args, resolveContext, resolveInfo) => {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n const record = data[safeAlias];\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n const liveCollection =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveCollection;\n const liveConditions =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveConditions;\n if (\n subscriptions &&\n liveCollection &&\n liveConditions &&\n data.__live\n ) {\n const { __id, ...rest } = data.__live;\n const condition = liveConditions[__id];\n const checker = condition(rest);\n\n liveCollection(\"pg\", table, checker);\n }\n if (record && liveRecord) {\n liveRecord(\"pg\", table, record.__identifiers);\n }\n return record;\n },\n };\n },\n {\n pgFieldIntrospection: table,\n isPgBackwardSingleRelationField: true,\n }\n ),\n },\n `Backward relation (single) for ${describePgEntity(\n constraint\n )}. To rename this relation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n constraint,\n {\n foreignSingleFieldName: \"newNameHere\",\n }\n )}`\n );\n }\n function makeFields(isConnection) {\n const manyRelationFieldName = isConnection\n ? inflection.manyRelationByKeys(\n keys,\n table,\n foreignTable,\n constraint\n )\n : inflection.manyRelationByKeysSimple(\n keys,\n table,\n foreignTable,\n constraint\n );\n\n memo = extend(\n memo,\n {\n [manyRelationFieldName]: fieldWithHooks(\n manyRelationFieldName,\n ({\n getDataFromParsedResolveInfoFragment,\n addDataGenerator,\n }) => {\n const sqlFrom = sql.identifier(schema.name, table.name);\n const queryOptions = {\n useAsterisk: table.canUseAsterisk,\n withPagination: isConnection,\n withPaginationAsFields: false,\n asJsonAggregate: !isConnection,\n };\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(() => {\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n isConnection ? ConnectionType : TableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias = queryBuilder.getTableAlias();\n const query = queryFromResolveData(\n sqlFrom,\n tableAlias,\n resolveData,\n queryOptions,\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder = queryBuilder;\n if (subscriptions) {\n innerQueryBuilder.makeLiveCollection(table);\n innerQueryBuilder.addLiveCondition(\n data => record => {\n return keys.every(\n key =>\n record[key.name] === data[key.name]\n );\n },\n keys.reduce((memo, key, i) => {\n memo[\n key.name\n ] = sql.fragment`${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`;\n return memo;\n }, {})\n );\n }\n if (primaryKeys) {\n if (\n subscriptions &&\n !isConnection &&\n table.primaryKeyConstraint\n ) {\n innerQueryBuilder.selectIdentifiers(table);\n }\n innerQueryBuilder.beforeLock(\n \"orderBy\",\n () => {\n // append order by primary key to the list of orders\n if (\n !innerQueryBuilder.isOrderUnique(false)\n ) {\n innerQueryBuilder.data.cursorPrefix = [\n \"primary_key_asc\",\n ];\n primaryKeys.forEach(key => {\n innerQueryBuilder.orderBy(\n sql.fragment`${innerQueryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )}`,\n true\n );\n });\n innerQueryBuilder.setOrderIsUnique();\n }\n }\n );\n }\n\n keys.forEach((key, i) => {\n innerQueryBuilder.where(\n sql.fragment`${tableAlias}.${sql.identifier(\n key.name\n )} = ${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`\n );\n });\n },\n queryBuilder.context,\n queryBuilder.rootValue\n );\n return sql.fragment`(${query})`;\n }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias));\n },\n };\n });\n const ConnectionType = getTypeByName(\n inflection.connection(gqlTableType.name)\n );\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n return {\n description:\n constraint.tags.backwardDescription ||\n `Reads and enables pagination through a set of \\`${tableTypeName}\\`.`,\n type: isConnection\n ? new GraphQLNonNull(ConnectionType)\n : new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(TableType))\n ),\n args: {},\n resolve: (data, _args, resolveContext, resolveInfo) => {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n const liveCollection =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveCollection;\n const liveConditions =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveConditions;\n if (\n subscriptions &&\n liveCollection &&\n liveConditions &&\n data.__live\n ) {\n const { __id, ...rest } = data.__live;\n const condition = liveConditions[__id];\n const checker = condition(rest);\n\n liveCollection(\"pg\", table, checker);\n }\n if (isConnection) {\n return addStartEndCursor(data[safeAlias]);\n } else {\n const records = data[safeAlias];\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n if (primaryKeys && subscriptions && liveRecord) {\n records.forEach(\n r =>\n r &&\n r.__identifiers &&\n liveRecord(\"pg\", table, r.__identifiers)\n );\n }\n return records;\n }\n },\n ...(isDeprecated\n ? {\n deprecationReason: singleRelationFieldName\n ? `Please use ${singleRelationFieldName} instead`\n : `Please use singular instead`, // This should never happen\n }\n : null),\n };\n },\n {\n isPgFieldConnection: isConnection,\n isPgFieldSimpleCollection: !isConnection,\n isPgBackwardRelationField: true,\n pgFieldIntrospection: table,\n }\n ),\n },\n\n `Backward relation (${\n isConnection ? \"connection\" : \"simple collection\"\n }) for ${describePgEntity(\n constraint\n )}. To rename this relation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n constraint,\n {\n [isConnection\n ? \"foreignFieldName\"\n : \"foreignSimpleFieldName\"]: \"newNameHere\",\n }\n )}`\n );\n }\n if (\n shouldAddManyRelation &&\n !omit(table, \"many\") &&\n !omit(constraint, \"many\")\n ) {\n const simpleCollections =\n constraint.tags.simpleCollections ||\n table.tags.simpleCollections ||\n pgSimpleCollections;\n const hasConnections = simpleCollections !== \"only\";\n const hasSimpleCollections =\n simpleCollections === \"only\" || simpleCollections === \"both\";\n if (hasConnections) {\n makeFields(true);\n }\n if (\n hasSimpleCollections &&\n !isUnique // if unique, use the singular instead\n ) {\n makeFields(false);\n }\n }\n return memo;\n }, {}),\n `Adding backward relations for ${Self.name}`\n );\n },\n [\"PgBackwardRelation\"]\n );\n}: Plugin);\n"],"file":"PgBackwardRelationPlugin.js"}
1
+ {"version":3,"sources":["../../src/plugins/PgBackwardRelationPlugin.js"],"names":["debug","OMIT","DEPRECATED","ONLY","PgBackwardRelationPlugin","builder","pgLegacyRelations","pgSimpleCollections","subscriptions","legacyRelationMode","only","deprecated","hook","fields","build","context","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","getSafeAliasFromResolveInfo","getSafeAliasFromAlias","graphql","GraphQLNonNull","GraphQLList","inflection","pgQueryFromResolveData","queryFromResolveData","pgAddStartEndCursor","addStartEndCursor","pgOmit","omit","sqlCommentByAddingTags","describePgEntity","scope","isPgRowType","pgIntrospection","foreignTable","fieldWithHooks","Self","kind","foreignKeyConstraints","foreignConstraints","filter","con","type","foreignTableTypeName","tableType","gqlForeignTableType","id","reduce","memo","constraint","table","classById","classId","Error","name","isSelectable","tableTypeName","gqlTableType","schema","namespace","keys","keyAttributes","foreignKeys","foreignKeyAttributes","every","_","some","key","isUnique","constraints","find","c","keyAttributeNums","length","n","i","num","isDeprecated","singleRelationFieldName","singleRelationByKeysBackwards","primaryKeyConstraint","primaryKeys","shouldAddSingleRelation","shouldAddManyRelation","getDataFromParsedResolveInfoFragment","addDataGenerator","sqlFrom","identifier","parsedResolveInfoFragment","pgQuery","queryBuilder","select","resolveData","tableAlias","Symbol","foreignTableAlias","getTableAlias","query","useAsterisk","asJson","addNullCase","withPagination","innerQueryBuilder","parentQueryBuilder","selectIdentifiers","makeLiveCollection","addLiveCondition","data","record","fragment","forEach","where","rootValue","alias","description","tags","backwardDescription","wrapDescription","args","resolve","_args","resolveContext","resolveInfo","safeAlias","liveRecord","liveCollection","liveConditions","__live","__id","rest","condition","checker","__identifiers","pgFieldIntrospection","isPgBackwardSingleRelationField","foreignSingleFieldName","makeFields","isConnection","manyRelationFieldName","manyRelationByKeys","manyRelationByKeysSimple","queryOptions","canUseAsterisk","withPaginationAsFields","asJsonAggregate","ConnectionType","TableType","beforeLock","isOrderUnique","cursorPrefix","orderBy","setOrderIsUnique","connection","records","r","deprecationReason","isPgFieldConnection","isPgFieldSimpleCollection","isPgBackwardRelationField","simpleCollections","hasConnections","hasSimpleCollections"],"mappings":"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","sourcesContent":["// @flow\nimport debugFactory from \"debug\";\n\nimport type { Plugin } from \"graphile-build\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nconst OMIT = 0;\nconst DEPRECATED = 1;\nconst ONLY = 2;\n\nexport default (function PgBackwardRelationPlugin(\n builder,\n { pgLegacyRelations, pgSimpleCollections, subscriptions }\n) {\n const legacyRelationMode =\n {\n only: ONLY,\n deprecated: DEPRECATED,\n }[pgLegacyRelations] || OMIT;\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n getSafeAliasFromResolveInfo,\n getSafeAliasFromAlias,\n graphql: { GraphQLNonNull, GraphQLList },\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgAddStartEndCursor: addStartEndCursor,\n pgOmit: omit,\n sqlCommentByAddingTags,\n describePgEntity,\n } = build;\n const {\n scope: { isPgRowType, pgIntrospection: foreignTable },\n fieldWithHooks,\n Self,\n } = context;\n if (!isPgRowType || !foreignTable || foreignTable.kind !== \"class\") {\n return fields;\n }\n // This is a relation in which WE are foreign\n const foreignKeyConstraints = foreignTable.foreignConstraints.filter(\n con => con.type === \"f\"\n );\n const foreignTableTypeName = inflection.tableType(foreignTable);\n const gqlForeignTableType = pgGetGqlTypeByTypeIdAndModifier(\n foreignTable.type.id,\n null\n );\n if (!gqlForeignTableType) {\n debug(\n `Could not determine type for foreign table with id ${foreignTable.type.id}`\n );\n return fields;\n }\n\n return extend(\n fields,\n foreignKeyConstraints.reduce((memo, constraint) => {\n if (omit(constraint, \"read\")) {\n return memo;\n }\n const table =\n introspectionResultsByKind.classById[constraint.classId];\n if (!table) {\n throw new Error(\n `Could not find the table that referenced us (constraint: ${constraint.name})`\n );\n }\n if (!table.isSelectable) {\n // Could be a composite type\n return memo;\n }\n const tableTypeName = inflection.tableType(table);\n const gqlTableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!gqlTableType) {\n debug(\n `Could not determine type for table with id ${constraint.classId}`\n );\n return memo;\n }\n const schema = table.namespace;\n\n const keys = constraint.keyAttributes;\n const foreignKeys = constraint.foreignKeyAttributes;\n if (!keys.every(_ => _) || !foreignKeys.every(_ => _)) {\n throw new Error(\"Could not find key columns!\");\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n if (foreignKeys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n const isUnique = !!table.constraints.find(\n c =>\n (c.type === \"p\" || c.type === \"u\") &&\n c.keyAttributeNums.length === keys.length &&\n c.keyAttributeNums.every((n, i) => keys[i].num === n)\n );\n\n const isDeprecated = isUnique && legacyRelationMode === DEPRECATED;\n\n const singleRelationFieldName = isUnique\n ? inflection.singleRelationByKeysBackwards(\n keys,\n table,\n foreignTable,\n constraint\n )\n : null;\n\n const primaryKeyConstraint = table.primaryKeyConstraint;\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n\n const shouldAddSingleRelation =\n isUnique && legacyRelationMode !== ONLY;\n\n const shouldAddManyRelation =\n !isUnique ||\n legacyRelationMode === DEPRECATED ||\n legacyRelationMode === ONLY;\n\n if (\n shouldAddSingleRelation &&\n !omit(table, \"read\") &&\n singleRelationFieldName\n ) {\n memo = extend(\n memo,\n {\n [singleRelationFieldName]: fieldWithHooks(\n singleRelationFieldName,\n ({\n getDataFromParsedResolveInfoFragment,\n addDataGenerator,\n }) => {\n const sqlFrom = sql.identifier(schema.name, table.name);\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(() => {\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n gqlTableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias = queryBuilder.getTableAlias();\n const query = queryFromResolveData(\n sqlFrom,\n tableAlias,\n resolveData,\n {\n useAsterisk: false, // Because it's only a single relation, no need\n asJson: true,\n addNullCase: true,\n withPagination: false,\n },\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder = queryBuilder;\n if (\n subscriptions &&\n table.primaryKeyConstraint\n ) {\n innerQueryBuilder.selectIdentifiers(table);\n innerQueryBuilder.makeLiveCollection(table);\n innerQueryBuilder.addLiveCondition(\n data => record => {\n return keys.every(\n key =>\n record[key.name] === data[key.name]\n );\n },\n keys.reduce((memo, key, i) => {\n memo[\n key.name\n ] = sql.fragment`${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`;\n return memo;\n }, {})\n );\n }\n keys.forEach((key, i) => {\n innerQueryBuilder.where(\n sql.fragment`${tableAlias}.${sql.identifier(\n key.name\n )} = ${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`\n );\n });\n },\n queryBuilder.context,\n queryBuilder.rootValue\n );\n return sql.fragment`(${query})`;\n }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias));\n },\n };\n });\n return {\n description:\n constraint.tags.backwardDescription ||\n build.wrapDescription(\n `Reads a single \\`${tableTypeName}\\` that is related to this \\`${foreignTableTypeName}\\`.`,\n \"field\"\n ),\n type: gqlTableType,\n args: {},\n resolve: (data, _args, resolveContext, resolveInfo) => {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n const record = data[safeAlias];\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n const liveCollection =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveCollection;\n const liveConditions =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveConditions;\n if (\n subscriptions &&\n liveCollection &&\n liveConditions &&\n data.__live\n ) {\n const { __id, ...rest } = data.__live;\n const condition = liveConditions[__id];\n const checker = condition(rest);\n\n liveCollection(\"pg\", table, checker);\n }\n if (record && liveRecord) {\n liveRecord(\"pg\", table, record.__identifiers);\n }\n return record;\n },\n };\n },\n {\n pgFieldIntrospection: table,\n isPgBackwardSingleRelationField: true,\n }\n ),\n },\n `Backward relation (single) for ${describePgEntity(\n constraint\n )}. To rename this relation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n constraint,\n {\n foreignSingleFieldName: \"newNameHere\",\n }\n )}`\n );\n }\n function makeFields(isConnection) {\n const manyRelationFieldName = isConnection\n ? inflection.manyRelationByKeys(\n keys,\n table,\n foreignTable,\n constraint\n )\n : inflection.manyRelationByKeysSimple(\n keys,\n table,\n foreignTable,\n constraint\n );\n\n memo = extend(\n memo,\n {\n [manyRelationFieldName]: fieldWithHooks(\n manyRelationFieldName,\n ({\n getDataFromParsedResolveInfoFragment,\n addDataGenerator,\n }) => {\n const sqlFrom = sql.identifier(schema.name, table.name);\n const queryOptions = {\n useAsterisk: table.canUseAsterisk,\n withPagination: isConnection,\n withPaginationAsFields: false,\n asJsonAggregate: !isConnection,\n };\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(() => {\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n isConnection ? ConnectionType : TableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias = queryBuilder.getTableAlias();\n const query = queryFromResolveData(\n sqlFrom,\n tableAlias,\n resolveData,\n queryOptions,\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder = queryBuilder;\n if (subscriptions) {\n innerQueryBuilder.makeLiveCollection(table);\n innerQueryBuilder.addLiveCondition(\n data => record => {\n return keys.every(\n key =>\n record[key.name] === data[key.name]\n );\n },\n keys.reduce((memo, key, i) => {\n memo[\n key.name\n ] = sql.fragment`${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`;\n return memo;\n }, {})\n );\n }\n if (primaryKeys) {\n if (\n subscriptions &&\n !isConnection &&\n table.primaryKeyConstraint\n ) {\n innerQueryBuilder.selectIdentifiers(table);\n }\n innerQueryBuilder.beforeLock(\n \"orderBy\",\n () => {\n // append order by primary key to the list of orders\n if (\n !innerQueryBuilder.isOrderUnique(false)\n ) {\n innerQueryBuilder.data.cursorPrefix = [\n \"primary_key_asc\",\n ];\n primaryKeys.forEach(key => {\n innerQueryBuilder.orderBy(\n sql.fragment`${innerQueryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )}`,\n true\n );\n });\n innerQueryBuilder.setOrderIsUnique();\n }\n }\n );\n }\n\n keys.forEach((key, i) => {\n innerQueryBuilder.where(\n sql.fragment`${tableAlias}.${sql.identifier(\n key.name\n )} = ${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`\n );\n });\n },\n queryBuilder.context,\n queryBuilder.rootValue\n );\n return sql.fragment`(${query})`;\n }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias));\n },\n };\n });\n const ConnectionType = getTypeByName(\n inflection.connection(gqlTableType.name)\n );\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n return {\n description:\n constraint.tags.backwardDescription ||\n build.wrapDescription(\n `Reads and enables pagination through a set of \\`${tableTypeName}\\`.`,\n \"field\"\n ),\n type: isConnection\n ? new GraphQLNonNull(ConnectionType)\n : new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(TableType))\n ),\n args: {},\n resolve: (data, _args, resolveContext, resolveInfo) => {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n const liveCollection =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveCollection;\n const liveConditions =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveConditions;\n if (\n subscriptions &&\n liveCollection &&\n liveConditions &&\n data.__live\n ) {\n const { __id, ...rest } = data.__live;\n const condition = liveConditions[__id];\n const checker = condition(rest);\n\n liveCollection(\"pg\", table, checker);\n }\n if (isConnection) {\n return addStartEndCursor(data[safeAlias]);\n } else {\n const records = data[safeAlias];\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n if (primaryKeys && subscriptions && liveRecord) {\n records.forEach(\n r =>\n r &&\n r.__identifiers &&\n liveRecord(\"pg\", table, r.__identifiers)\n );\n }\n return records;\n }\n },\n ...(isDeprecated\n ? {\n deprecationReason: singleRelationFieldName\n ? `Please use ${singleRelationFieldName} instead`\n : `Please use singular instead`, // This should never happen\n }\n : null),\n };\n },\n {\n isPgFieldConnection: isConnection,\n isPgFieldSimpleCollection: !isConnection,\n isPgBackwardRelationField: true,\n pgFieldIntrospection: table,\n }\n ),\n },\n\n `Backward relation (${\n isConnection ? \"connection\" : \"simple collection\"\n }) for ${describePgEntity(\n constraint\n )}. To rename this relation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n constraint,\n {\n [isConnection\n ? \"foreignFieldName\"\n : \"foreignSimpleFieldName\"]: \"newNameHere\",\n }\n )}`\n );\n }\n if (\n shouldAddManyRelation &&\n !omit(table, \"many\") &&\n !omit(constraint, \"many\")\n ) {\n const simpleCollections =\n constraint.tags.simpleCollections ||\n table.tags.simpleCollections ||\n pgSimpleCollections;\n const hasConnections = simpleCollections !== \"only\";\n const hasSimpleCollections =\n simpleCollections === \"only\" || simpleCollections === \"both\";\n if (hasConnections) {\n makeFields(true);\n }\n if (\n hasSimpleCollections &&\n !isUnique // if unique, use the singular instead\n ) {\n makeFields(false);\n }\n }\n return memo;\n }, {}),\n `Adding backward relations for ${Self.name}`\n );\n },\n [\"PgBackwardRelation\"]\n );\n}: Plugin);\n"],"file":"PgBackwardRelationPlugin.js"}
@@ -52,7 +52,7 @@ function preventEmptyResult(obj) {
52
52
  if (typeof result !== "string" || result.length === 0) {
53
53
  const stringifiedArgs = require("util").inspect(args);
54
54
 
55
- throw new Error(`Inflector for '${key}' returned '${String(result)}'; expected non-empty string\n` + `See: https://github.com/graphile/graphile-build/blob/master/packages/graphile-build-pg/src/plugins/PgBasicsPlugin.js\n` + `Arguments passed to ${key}:\n${stringifiedArgs}`);
55
+ throw new Error(`Inflector for '${key}' returned '${String(result)}'; expected non-empty string\n` + `See: https://github.com/graphile/graphile-engine/blob/master/packages/graphile-build-pg/src/plugins/PgBasicsPlugin.js\n` + `Arguments passed to ${key}:\n${stringifiedArgs}`);
56
56
  }
57
57
 
58
58
  return result;
@@ -56,7 +56,7 @@ export function preventEmptyResult<
56
56
  `Inflector for '${key}' returned '${String(
57
57
  result
58
58
  )}'; expected non-empty string\n` +
59
- `See: https://github.com/graphile/graphile-build/blob/master/packages/graphile-build-pg/src/plugins/PgBasicsPlugin.js\n` +
59
+ `See: https://github.com/graphile/graphile-engine/blob/master/packages/graphile-build-pg/src/plugins/PgBasicsPlugin.js\n` +
60
60
  `Arguments passed to ${key}:\n${stringifiedArgs}`
61
61
  );
62
62
  }