graphile-build-pg 4.13.0 → 4.14.1

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 (106) hide show
  1. package/README.md +4 -13
  2. package/node8plus/GraphQLJSON.js +0 -11
  3. package/node8plus/GraphQLJSON.js.map +1 -1
  4. package/node8plus/PgLiveProvider.js +4 -11
  5. package/node8plus/PgLiveProvider.js.map +1 -1
  6. package/node8plus/QueryBuilder.js +42 -176
  7. package/node8plus/QueryBuilder.js.map +1 -1
  8. package/node8plus/index.js +8 -47
  9. package/node8plus/index.js.map +1 -1
  10. package/node8plus/inflections.js +9 -61
  11. package/node8plus/inflections.js.map +1 -1
  12. package/node8plus/omit.js +7 -22
  13. package/node8plus/omit.js.map +1 -1
  14. package/node8plus/parseIdentifier.js +0 -1
  15. package/node8plus/parseIdentifier.js.map +1 -1
  16. package/node8plus/pgPrepareAndRun.js +2 -14
  17. package/node8plus/pgPrepareAndRun.js.map +1 -1
  18. package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
  19. package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
  20. package/node8plus/plugins/PgAllRows.js +0 -29
  21. package/node8plus/plugins/PgAllRows.js.map +1 -1
  22. package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
  23. package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
  24. package/node8plus/plugins/PgBasicsPlugin.js +20 -147
  25. package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
  26. package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
  27. package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
  28. package/node8plus/plugins/PgColumnsPlugin.js +4 -17
  29. package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
  30. package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
  31. package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
  32. package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
  33. package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
  34. package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
  35. package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
  36. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
  37. package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
  38. package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
  39. package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
  40. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
  41. package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
  42. package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
  43. package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
  44. package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
  45. package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
  46. package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
  47. package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
  48. package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
  49. package/node8plus/plugins/PgJWTPlugin.js +2 -18
  50. package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
  51. package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
  52. package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
  53. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
  54. package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
  55. package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
  56. package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
  57. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
  58. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
  59. package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
  60. package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
  61. package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
  62. package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
  63. package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
  64. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
  65. package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
  66. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
  67. package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
  68. package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
  69. package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
  70. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
  71. package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
  72. package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
  73. package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
  74. package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
  75. package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
  76. package/node8plus/plugins/PgRowNode.js +0 -32
  77. package/node8plus/plugins/PgRowNode.js.map +1 -1
  78. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
  79. package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
  80. package/node8plus/plugins/PgTablesPlugin.js +7 -59
  81. package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
  82. package/node8plus/plugins/PgTypesPlugin.js +140 -240
  83. package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
  84. package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
  85. package/node8plus/plugins/addStartEndCursor.js +2 -5
  86. package/node8plus/plugins/addStartEndCursor.js.map +1 -1
  87. package/node8plus/plugins/debugSql.js +1 -16
  88. package/node8plus/plugins/debugSql.js.map +1 -1
  89. package/node8plus/plugins/introspectionQuery.js +3 -4
  90. package/node8plus/plugins/introspectionQuery.js.flow +11 -3
  91. package/node8plus/plugins/introspectionQuery.js.map +1 -1
  92. package/node8plus/plugins/makeProcField.js +40 -90
  93. package/node8plus/plugins/makeProcField.js.map +1 -1
  94. package/node8plus/plugins/pgField.js +2 -7
  95. package/node8plus/plugins/pgField.js.map +1 -1
  96. package/node8plus/plugins/viaTemporaryTable.js +6 -12
  97. package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
  98. package/node8plus/postgresInterval.js +4 -4
  99. package/node8plus/postgresInterval.js.map +1 -1
  100. package/node8plus/queryFromResolveDataFactory.js +33 -77
  101. package/node8plus/queryFromResolveDataFactory.js.map +1 -1
  102. package/node8plus/utils.js +8 -9
  103. package/node8plus/utils.js.map +1 -1
  104. package/node8plus/withPgClient.js +4 -26
  105. package/node8plus/withPgClient.js.map +1 -1
  106. package/package.json +4 -4
@@ -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","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 =\n getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n gqlTableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias =\n 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 =\n 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 =\n getSafeAliasFromResolveInfo(resolveInfo);\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 =\n getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n isConnection ? ConnectionType : TableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias =\n queryBuilder.getTableAlias();\n const query = queryFromResolveData(\n sqlFrom,\n tableAlias,\n resolveData,\n queryOptions,\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder =\n 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 =\n getSafeAliasFromResolveInfo(resolveInfo);\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,"file":"PgBackwardRelationPlugin.js","names":["_debug","_interopRequireDefault","require","obj","__esModule","default","debug","debugFactory","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","exports"],"sources":["../../src/plugins/PgBackwardRelationPlugin.js"],"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 =\n getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n gqlTableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias =\n 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 =\n 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 =\n getSafeAliasFromResolveInfo(resolveInfo);\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 =\n getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n isConnection ? ConnectionType : TableType\n );\n const tableAlias = sql.identifier(Symbol());\n const foreignTableAlias =\n queryBuilder.getTableAlias();\n const query = queryFromResolveData(\n sqlFrom,\n tableAlias,\n resolveData,\n queryOptions,\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder =\n 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 =\n getSafeAliasFromResolveInfo(resolveInfo);\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"],"mappings":"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"}