graphile-build-pg 4.4.5 → 4.5.3
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.
- package/README.md +2 -1
- package/node8plus/QueryBuilder.d.ts +10 -2
- package/node8plus/QueryBuilder.js +80 -1
- package/node8plus/QueryBuilder.js.flow +75 -2
- package/node8plus/QueryBuilder.js.map +1 -1
- package/node8plus/index.d.ts +8 -0
- package/node8plus/index.js +7 -1
- package/node8plus/index.js.flow +6 -1
- package/node8plus/index.js.map +1 -1
- package/node8plus/plugins/PgBasicsPlugin.js +5 -3
- package/node8plus/plugins/PgBasicsPlugin.js.flow +2 -0
- package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
- package/node8plus/plugins/PgConnectionTotalCount.js +10 -4
- package/node8plus/plugins/PgConnectionTotalCount.js.flow +13 -9
- package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
- package/node8plus/plugins/PgIntrospectionPlugin.d.ts +48 -11
- package/node8plus/plugins/PgIntrospectionPlugin.js +53 -23
- package/node8plus/plugins/PgIntrospectionPlugin.js.flow +81 -25
- package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgJWTPlugin.js +6 -1
- package/node8plus/plugins/PgJWTPlugin.js.flow +7 -1
- package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +2 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +3 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +1 -0
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.flow +1 -0
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +1 -0
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.flow +1 -0
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgTypesPlugin.js +9 -2
- package/node8plus/plugins/PgTypesPlugin.js.flow +19 -0
- package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
- package/node8plus/plugins/introspectionQuery.js +1 -0
- package/node8plus/plugins/introspectionQuery.js.flow +1 -0
- package/node8plus/plugins/introspectionQuery.js.map +1 -1
- package/node8plus/queryFromResolveDataFactory.js +8 -1
- package/node8plus/queryFromResolveDataFactory.js.flow +13 -1
- package/node8plus/queryFromResolveDataFactory.js.map +1 -1
- package/package.json +7 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgMutationUpdateDeletePlugin.js"],"names":["debug","PgMutationUpdateDeletePlugin","builder","pgDisableDefaultMutations","hook","fields","build","context","newWithHooks","getNodeIdForTypeAndIdentifiers","getTypeAndIdentifiersFromNodeId","nodeIdFieldName","fieldDataGeneratorsByType","extend","parseResolveInfo","getTypeByName","gql2pg","pgGetGqlTypeByTypeIdAndModifier","pgGetGqlInputTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","graphql","GraphQLNonNull","GraphQLInputObjectType","GraphQLString","GraphQLObjectType","GraphQLID","pgColumnFilter","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","pgViaTemporaryTable","viaTemporaryTable","describePgEntity","sqlCommentByAddingTags","pgField","scope","isRootMutation","fieldWithHooks","reduce","outerMemo","mode","class","memo","table","namespace","canUpdate","isUpdatable","canDelete","isDeletable","TableType","type","id","commonCodeRenameMe","pgClient","resolveInfo","getDataFromParsedResolveInfoFragment","PayloadType","args","condition","resolveContext","input","parsedResolveInfoFragment","resolveData","sqlTypeIdentifier","identifier","name","sqlMutationQuery","sqlColumns","sqlValues","inputData","patchField","tableFieldName","attributes","forEach","attr","fieldName","column","val","push","typeModifier","length","query","join","map","col","i","fragment","modifiedRowAlias","Symbol","rootValue","row","rows","e","Error","pluralize","_singularizedTableName","clientMutationId","data","uniqueConstraints","constraints","filter","con","Table","tableTypeName","TablePatch","patchType","description","tableName","deletedNodeIdFieldName","deletedNodeId","Object","assign","addDataGenerator","fieldDataGeneratorsByTableType","get","gens","gen","resolve","__identifiers","isPgMutationPayloadDeletedNodeIdField","__origin","isMutationPayload","isPgUpdatePayloadType","isPgDeletePayloadType","pgIntrospection","primaryKeyConstraint","primaryKeys","keyAttributes","InputType","isPgUpdateInputType","isPgUpdateNodeInputType","isPgDeleteInputType","isPgDeleteNodeInputType","pgInflection","isMutationInput","parent","nodeId","Type","identifiers","key","idx","isPgNodeMutation","pgFieldIntrospection","constraint","keys","every","_","some","typeId","isPgUpdateByKeysInputType","isPgDeleteByKeysInputType","pgKeys","pgFieldConstraint"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nexport default (async function PgMutationUpdateDeletePlugin(\n builder,\n { pgDisableDefaultMutations }\n) {\n if (pgDisableDefaultMutations) {\n return;\n }\n\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n newWithHooks,\n getNodeIdForTypeAndIdentifiers,\n getTypeAndIdentifiersFromNodeId,\n nodeIdFieldName,\n fieldDataGeneratorsByType,\n extend,\n parseResolveInfo,\n getTypeByName,\n gql2pg,\n pgGetGqlTypeByTypeIdAndModifier,\n pgGetGqlInputTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n graphql: {\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLString,\n GraphQLObjectType,\n GraphQLID,\n },\n pgColumnFilter,\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgOmit: omit,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n const {\n scope: { isRootMutation },\n fieldWithHooks,\n } = context;\n\n if (!isRootMutation) {\n return fields;\n }\n\n return extend(\n fields,\n [\"update\", \"delete\"].reduce(\n (outerMemo, mode) =>\n introspectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.namespace) return memo;\n const canUpdate =\n mode === \"update\" &&\n table.isUpdatable &&\n !omit(table, \"update\");\n const canDelete =\n mode === \"delete\" &&\n table.isDeletable &&\n !omit(table, \"delete\");\n if (!canUpdate && !canDelete) return memo;\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableType) {\n return memo;\n }\n async function commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n condition,\n context,\n resolveContext\n ) {\n const { input } = args;\n const parsedResolveInfoFragment = parseResolveInfo(resolveInfo);\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n PayloadType\n );\n\n const sqlTypeIdentifier = sql.identifier(\n table.namespace.name,\n table.name\n );\n\n let sqlMutationQuery;\n if (mode === \"update\") {\n const sqlColumns = [];\n const sqlValues = [];\n const inputData =\n input[\n inflection.patchField(inflection.tableFieldName(table))\n ];\n table.attributes.forEach(attr => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return;\n if (omit(attr, \"update\")) return;\n\n const fieldName = inflection.column(attr);\n if (\n fieldName in inputData /* Because we care about null! */\n ) {\n const val = inputData[fieldName];\n sqlColumns.push(sql.identifier(attr.name));\n sqlValues.push(gql2pg(val, attr.type, attr.typeModifier));\n }\n });\n if (sqlColumns.length === 0) {\n return null;\n }\n sqlMutationQuery = sql.query`\\\nupdate ${sql.identifier(table.namespace.name, table.name)} set ${sql.join(\n sqlColumns.map(\n (col, i) => sql.fragment`${col} = ${sqlValues[i]}`\n ),\n \", \"\n )}\nwhere ${condition}\nreturning *`;\n } else {\n sqlMutationQuery = sql.query`\\\ndelete from ${sql.identifier(table.namespace.name, table.name)}\nwhere ${condition}\nreturning *`;\n }\n\n const modifiedRowAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n modifiedRowAlias,\n modifiedRowAlias,\n resolveData,\n {},\n null,\n resolveContext,\n resolveInfo.rootValue\n );\n let row;\n try {\n await pgClient.query(\"SAVEPOINT graphql_mutation\");\n const rows = await viaTemporaryTable(\n pgClient,\n sqlTypeIdentifier,\n sqlMutationQuery,\n modifiedRowAlias,\n query\n );\n row = rows[0];\n await pgClient.query(\"RELEASE SAVEPOINT graphql_mutation\");\n } catch (e) {\n await pgClient.query(\n \"ROLLBACK TO SAVEPOINT graphql_mutation\"\n );\n throw e;\n }\n if (!row) {\n throw new Error(\n `No values were ${mode}d in collection '${inflection.pluralize(\n inflection._singularizedTableName(table)\n )}' because no values you can ${mode} were found matching these criteria.`\n );\n }\n return {\n clientMutationId: input.clientMutationId,\n data: row,\n };\n }\n if (TableType) {\n const uniqueConstraints = table.constraints.filter(\n con => con.type === \"u\" || con.type === \"p\"\n );\n const Table = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n const tableTypeName = Table.name;\n const TablePatch = getTypeByName(\n inflection.patchType(Table.name)\n );\n const PayloadType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection[\n mode === \"delete\"\n ? \"deletePayloadType\"\n : \"updatePayloadType\"\n ](table),\n description: `The output of our ${mode} \\`${tableTypeName}\\` mutation.`,\n fields: ({ fieldWithHooks }) => {\n const tableName = inflection.tableFieldName(table);\n // This should really be `-node-id` but for compatibility with PostGraphQL v3 we haven't made that change.\n const deletedNodeIdFieldName = inflection.deletedNodeId(\n table\n );\n return Object.assign(\n {\n clientMutationId: {\n description:\n \"The exact same `clientMutationId` that was provided in the mutation input, unchanged and unused. May be used by a client to track mutations.\",\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: `The \\`${tableTypeName}\\` that was ${mode}d by this mutation.`,\n type: Table,\n },\n {},\n false\n ),\n },\n mode === \"delete\"\n ? {\n [deletedNodeIdFieldName]: fieldWithHooks(\n deletedNodeIdFieldName,\n ({ addDataGenerator }) => {\n const fieldDataGeneratorsByTableType = fieldDataGeneratorsByType.get(\n TableType\n );\n\n const gens =\n fieldDataGeneratorsByTableType &&\n fieldDataGeneratorsByTableType[\n nodeIdFieldName\n ];\n if (gens) {\n gens.forEach(gen => addDataGenerator(gen));\n }\n return {\n type: GraphQLID,\n resolve(data) {\n return (\n data.data.__identifiers &&\n getNodeIdForTypeAndIdentifiers(\n Table,\n ...data.data.__identifiers\n )\n );\n },\n };\n },\n {\n isPgMutationPayloadDeletedNodeIdField: true,\n }\n ),\n }\n : null\n );\n },\n },\n {\n __origin: `Adding table ${mode} mutation payload type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isMutationPayload: true,\n isPgUpdatePayloadType: mode === \"update\",\n isPgDeletePayloadType: mode === \"delete\",\n pgIntrospection: table,\n }\n );\n\n // NodeId\n const primaryKeyConstraint = table.primaryKeyConstraint;\n if (nodeIdFieldName && primaryKeyConstraint) {\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const fieldName = inflection[\n mode === \"update\" ? \"updateNode\" : \"deleteNode\"\n ](table);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateNodeInputType\"\n : \"deleteNodeInputType\"\n ](table),\n fields: Object.assign(\n {\n clientMutationId: {\n description:\n \"An arbitrary string value with no semantic meaning. Will be included in the payload verbatim. May be used to track mutations by the client.\",\n type: GraphQLString,\n },\n [nodeIdFieldName]: {\n description: `The globally unique \\`ID\\` which will identify a single \\`${tableTypeName}\\` to be ${mode}d.`,\n type: new GraphQLNonNull(GraphQLID),\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null\n ),\n },\n {\n __origin: `Adding table ${mode} (by node ID) mutation input type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateNodeInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteNodeInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using its globally unique id and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using its globally unique id.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n const nodeId = input[nodeIdFieldName];\n try {\n const {\n Type,\n identifiers,\n } = getTypeAndIdentifiersFromNodeId(nodeId);\n if (Type !== TableType) {\n throw new Error(\"Mismatched type\");\n }\n if (identifiers.length !== primaryKeys.length) {\n throw new Error(\"Invalid ID\");\n }\n\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n primaryKeys.map(\n (key, idx) =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n identifiers[idx],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n } catch (e) {\n debug(e);\n return null;\n }\n },\n };\n },\n {\n isPgNodeMutation: true,\n pgFieldIntrospection: table,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n \"Adding ${mode} mutation for ${describePgEntity(table)}\"\n );\n }\n\n // Unique\n uniqueConstraints.forEach(constraint => {\n if (omit(constraint, mode)) {\n return;\n }\n const keys = constraint.keyAttributes;\n if (!keys.every(_ => _)) {\n throw new Error(\n `Consistency error: could not find an attribute in the constraint when building the ${mode} mutation for ${describePgEntity(\n table\n )}!`\n );\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return;\n }\n const fieldName = inflection[\n mode === \"update\" ? \"updateByKeys\" : \"deleteByKeys\"\n ](keys, table, constraint);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateByKeysInputType\"\n : \"deleteByKeysInputType\"\n ](keys, table, constraint),\n fields: Object.assign(\n {\n clientMutationId: {\n type: GraphQLString,\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null,\n keys.reduce((memo, key) => {\n memo[inflection.column(key)] = {\n description: key.description,\n type: new GraphQLNonNull(\n pgGetGqlInputTypeByTypeIdAndModifier(\n key.typeId,\n key.typeModifier\n )\n ),\n };\n return memo;\n }, {})\n ),\n },\n {\n __origin: `Adding table ${mode} mutation input type for ${describePgEntity(\n constraint\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateByKeysInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteByKeysInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n pgKeys: keys,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using a unique key and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using a unique key.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n keys.map(\n key =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n input[inflection.column(key)],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n },\n };\n },\n {\n isPgNodeMutation: false,\n pgFieldIntrospection: table,\n pgFieldConstraint: constraint,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n `Adding ${mode} mutation for ${describePgEntity(\n constraint\n )}`\n );\n });\n }\n return memo;\n }, outerMemo),\n {}\n ),\n `Adding default update/delete mutations to root Mutation type`\n );\n },\n [\"PgMutationUpdateDelete\"]\n );\n}: Plugin);\n"],"file":"PgMutationUpdateDeletePlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/PgMutationUpdateDeletePlugin.js"],"names":["debug","PgMutationUpdateDeletePlugin","builder","pgDisableDefaultMutations","hook","fields","build","context","newWithHooks","getNodeIdForTypeAndIdentifiers","getTypeAndIdentifiersFromNodeId","nodeIdFieldName","fieldDataGeneratorsByType","extend","parseResolveInfo","getTypeByName","gql2pg","pgGetGqlTypeByTypeIdAndModifier","pgGetGqlInputTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","graphql","GraphQLNonNull","GraphQLInputObjectType","GraphQLString","GraphQLObjectType","GraphQLID","pgColumnFilter","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","pgViaTemporaryTable","viaTemporaryTable","describePgEntity","sqlCommentByAddingTags","pgField","scope","isRootMutation","fieldWithHooks","reduce","outerMemo","mode","class","memo","table","namespace","canUpdate","isUpdatable","attributes","find","attr","canDelete","isDeletable","TableType","type","id","commonCodeRenameMe","pgClient","resolveInfo","getDataFromParsedResolveInfoFragment","PayloadType","args","condition","resolveContext","input","parsedResolveInfoFragment","resolveData","sqlTypeIdentifier","identifier","name","sqlMutationQuery","sqlColumns","sqlValues","inputData","patchField","tableFieldName","forEach","fieldName","column","val","push","typeModifier","length","query","join","map","col","i","fragment","modifiedRowAlias","Symbol","rootValue","row","rows","e","Error","pluralize","_singularizedTableName","clientMutationId","data","uniqueConstraints","constraints","filter","con","Table","tableTypeName","TablePatch","patchType","description","tableName","deletedNodeIdFieldName","deletedNodeId","Object","assign","addDataGenerator","fieldDataGeneratorsByTableType","get","gens","gen","resolve","__identifiers","isPgMutationPayloadDeletedNodeIdField","__origin","isMutationPayload","isPgUpdatePayloadType","isPgDeletePayloadType","pgIntrospection","primaryKeyConstraint","primaryKeys","keyAttributes","InputType","isPgUpdateInputType","isPgUpdateNodeInputType","isPgDeleteInputType","isPgDeleteNodeInputType","pgInflection","isMutationInput","parent","nodeId","Type","identifiers","key","idx","isPgNodeMutation","pgFieldIntrospection","constraint","keys","every","_","some","typeId","isPgUpdateByKeysInputType","isPgDeleteByKeysInputType","pgKeys","pgFieldConstraint"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nexport default (async function PgMutationUpdateDeletePlugin(\n builder,\n { pgDisableDefaultMutations }\n) {\n if (pgDisableDefaultMutations) {\n return;\n }\n\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n newWithHooks,\n getNodeIdForTypeAndIdentifiers,\n getTypeAndIdentifiersFromNodeId,\n nodeIdFieldName,\n fieldDataGeneratorsByType,\n extend,\n parseResolveInfo,\n getTypeByName,\n gql2pg,\n pgGetGqlTypeByTypeIdAndModifier,\n pgGetGqlInputTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n graphql: {\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLString,\n GraphQLObjectType,\n GraphQLID,\n },\n pgColumnFilter,\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgOmit: omit,\n pgViaTemporaryTable: viaTemporaryTable,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n const {\n scope: { isRootMutation },\n fieldWithHooks,\n } = context;\n\n if (!isRootMutation) {\n return fields;\n }\n\n return extend(\n fields,\n [\"update\", \"delete\"].reduce(\n (outerMemo, mode) =>\n introspectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.namespace) return memo;\n const canUpdate =\n mode === \"update\" &&\n table.isUpdatable &&\n !omit(table, \"update\") &&\n // Check at least one attribute is updatable\n table.attributes.find(attr => !omit(attr, \"update\"));\n const canDelete =\n mode === \"delete\" &&\n table.isDeletable &&\n !omit(table, \"delete\");\n if (!canUpdate && !canDelete) return memo;\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableType) {\n return memo;\n }\n async function commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n condition,\n context,\n resolveContext\n ) {\n const { input } = args;\n const parsedResolveInfoFragment = parseResolveInfo(resolveInfo);\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n PayloadType\n );\n\n const sqlTypeIdentifier = sql.identifier(\n table.namespace.name,\n table.name\n );\n\n let sqlMutationQuery;\n if (mode === \"update\") {\n const sqlColumns = [];\n const sqlValues = [];\n const inputData =\n input[\n inflection.patchField(inflection.tableFieldName(table))\n ];\n table.attributes.forEach(attr => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!pgColumnFilter(attr, build, context)) return;\n if (omit(attr, \"update\")) return;\n\n const fieldName = inflection.column(attr);\n if (\n fieldName in inputData /* Because we care about null! */\n ) {\n const val = inputData[fieldName];\n sqlColumns.push(sql.identifier(attr.name));\n sqlValues.push(gql2pg(val, attr.type, attr.typeModifier));\n }\n });\n if (sqlColumns.length === 0) {\n return null;\n }\n sqlMutationQuery = sql.query`\\\nupdate ${sql.identifier(table.namespace.name, table.name)} set ${sql.join(\n sqlColumns.map(\n (col, i) => sql.fragment`${col} = ${sqlValues[i]}`\n ),\n \", \"\n )}\nwhere ${condition}\nreturning *`;\n } else {\n sqlMutationQuery = sql.query`\\\ndelete from ${sql.identifier(table.namespace.name, table.name)}\nwhere ${condition}\nreturning *`;\n }\n\n const modifiedRowAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n modifiedRowAlias,\n modifiedRowAlias,\n resolveData,\n {},\n null,\n resolveContext,\n resolveInfo.rootValue\n );\n let row;\n try {\n await pgClient.query(\"SAVEPOINT graphql_mutation\");\n const rows = await viaTemporaryTable(\n pgClient,\n sqlTypeIdentifier,\n sqlMutationQuery,\n modifiedRowAlias,\n query\n );\n row = rows[0];\n await pgClient.query(\"RELEASE SAVEPOINT graphql_mutation\");\n } catch (e) {\n await pgClient.query(\n \"ROLLBACK TO SAVEPOINT graphql_mutation\"\n );\n throw e;\n }\n if (!row) {\n throw new Error(\n `No values were ${mode}d in collection '${inflection.pluralize(\n inflection._singularizedTableName(table)\n )}' because no values you can ${mode} were found matching these criteria.`\n );\n }\n return {\n clientMutationId: input.clientMutationId,\n data: row,\n };\n }\n if (TableType) {\n const uniqueConstraints = table.constraints.filter(\n con => con.type === \"u\" || con.type === \"p\"\n );\n const Table = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n const tableTypeName = Table.name;\n const TablePatch = getTypeByName(\n inflection.patchType(Table.name)\n );\n const PayloadType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection[\n mode === \"delete\"\n ? \"deletePayloadType\"\n : \"updatePayloadType\"\n ](table),\n description: `The output of our ${mode} \\`${tableTypeName}\\` mutation.`,\n fields: ({ fieldWithHooks }) => {\n const tableName = inflection.tableFieldName(table);\n // This should really be `-node-id` but for compatibility with PostGraphQL v3 we haven't made that change.\n const deletedNodeIdFieldName = inflection.deletedNodeId(\n table\n );\n return Object.assign(\n {\n clientMutationId: {\n description:\n \"The exact same `clientMutationId` that was provided in the mutation input, unchanged and unused. May be used by a client to track mutations.\",\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: `The \\`${tableTypeName}\\` that was ${mode}d by this mutation.`,\n type: Table,\n },\n {},\n false\n ),\n },\n mode === \"delete\"\n ? {\n [deletedNodeIdFieldName]: fieldWithHooks(\n deletedNodeIdFieldName,\n ({ addDataGenerator }) => {\n const fieldDataGeneratorsByTableType = fieldDataGeneratorsByType.get(\n TableType\n );\n\n const gens =\n fieldDataGeneratorsByTableType &&\n fieldDataGeneratorsByTableType[\n nodeIdFieldName\n ];\n if (gens) {\n gens.forEach(gen => addDataGenerator(gen));\n }\n return {\n type: GraphQLID,\n resolve(data) {\n return (\n data.data.__identifiers &&\n getNodeIdForTypeAndIdentifiers(\n Table,\n ...data.data.__identifiers\n )\n );\n },\n };\n },\n {\n isPgMutationPayloadDeletedNodeIdField: true,\n }\n ),\n }\n : null\n );\n },\n },\n {\n __origin: `Adding table ${mode} mutation payload type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isMutationPayload: true,\n isPgUpdatePayloadType: mode === \"update\",\n isPgDeletePayloadType: mode === \"delete\",\n pgIntrospection: table,\n }\n );\n\n // NodeId\n const primaryKeyConstraint = table.primaryKeyConstraint;\n if (nodeIdFieldName && primaryKeyConstraint) {\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const fieldName = inflection[\n mode === \"update\" ? \"updateNode\" : \"deleteNode\"\n ](table);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateNodeInputType\"\n : \"deleteNodeInputType\"\n ](table),\n fields: Object.assign(\n {\n clientMutationId: {\n description:\n \"An arbitrary string value with no semantic meaning. Will be included in the payload verbatim. May be used to track mutations by the client.\",\n type: GraphQLString,\n },\n [nodeIdFieldName]: {\n description: `The globally unique \\`ID\\` which will identify a single \\`${tableTypeName}\\` to be ${mode}d.`,\n type: new GraphQLNonNull(GraphQLID),\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null\n ),\n },\n {\n __origin: `Adding table ${mode} (by node ID) mutation input type for ${describePgEntity(\n table\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateNodeInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteNodeInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using its globally unique id and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using its globally unique id.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n const nodeId = input[nodeIdFieldName];\n try {\n const {\n Type,\n identifiers,\n } = getTypeAndIdentifiersFromNodeId(nodeId);\n if (Type !== TableType) {\n throw new Error(\"Mismatched type\");\n }\n if (identifiers.length !== primaryKeys.length) {\n throw new Error(\"Invalid ID\");\n }\n\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n primaryKeys.map(\n (key, idx) =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n identifiers[idx],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n } catch (e) {\n debug(e);\n return null;\n }\n },\n };\n },\n {\n isPgNodeMutation: true,\n pgFieldIntrospection: table,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n \"Adding ${mode} mutation for ${describePgEntity(table)}\"\n );\n }\n\n // Unique\n uniqueConstraints.forEach(constraint => {\n if (omit(constraint, mode)) {\n return;\n }\n const keys = constraint.keyAttributes;\n if (!keys.every(_ => _)) {\n throw new Error(\n `Consistency error: could not find an attribute in the constraint when building the ${mode} mutation for ${describePgEntity(\n table\n )}!`\n );\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return;\n }\n const fieldName = inflection[\n mode === \"update\" ? \"updateByKeys\" : \"deleteByKeys\"\n ](keys, table, constraint);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: `All input for the \\`${fieldName}\\` mutation.`,\n name: inflection[\n mode === \"update\"\n ? \"updateByKeysInputType\"\n : \"deleteByKeysInputType\"\n ](keys, table, constraint),\n fields: Object.assign(\n {\n clientMutationId: {\n type: GraphQLString,\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n type: new GraphQLNonNull(TablePatch),\n },\n }\n : null,\n keys.reduce((memo, key) => {\n memo[inflection.column(key)] = {\n description: key.description,\n type: new GraphQLNonNull(\n pgGetGqlInputTypeByTypeIdAndModifier(\n key.typeId,\n key.typeModifier\n )\n ),\n };\n return memo;\n }, {})\n ),\n },\n {\n __origin: `Adding table ${mode} mutation input type for ${describePgEntity(\n constraint\n )}. You can rename the table's GraphQL type via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n name: \"newNameHere\",\n }\n )}`,\n isPgUpdateInputType: mode === \"update\",\n isPgUpdateByKeysInputType: mode === \"update\",\n isPgDeleteInputType: mode === \"delete\",\n isPgDeleteByKeysInputType: mode === \"delete\",\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n pgKeys: keys,\n isMutationInput: true,\n }\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const {\n getDataFromParsedResolveInfoFragment,\n } = context;\n return {\n description:\n mode === \"update\"\n ? `Updates a single \\`${tableTypeName}\\` using a unique key and a patch.`\n : `Deletes a single \\`${tableTypeName}\\` using a unique key.`,\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(\n parent,\n args,\n resolveContext,\n resolveInfo\n ) {\n const { input } = args;\n const { pgClient } = resolveContext;\n return commonCodeRenameMe(\n pgClient,\n resolveInfo,\n getDataFromParsedResolveInfoFragment,\n PayloadType,\n args,\n sql.fragment`(${sql.join(\n keys.map(\n key =>\n sql.fragment`${sql.identifier(\n key.name\n )} = ${gql2pg(\n input[inflection.column(key)],\n key.type,\n key.typeModifier\n )}`\n ),\n \") and (\"\n )})`,\n context,\n resolveContext\n );\n },\n };\n },\n {\n isPgNodeMutation: false,\n pgFieldIntrospection: table,\n pgFieldConstraint: constraint,\n [mode === \"update\"\n ? \"isPgUpdateMutationField\"\n : \"isPgDeleteMutationField\"]: true,\n }\n ),\n },\n `Adding ${mode} mutation for ${describePgEntity(\n constraint\n )}`\n );\n });\n }\n return memo;\n }, outerMemo),\n {}\n ),\n `Adding default update/delete mutations to root Mutation type`\n );\n },\n [\"PgMutationUpdateDelete\"]\n );\n}: Plugin);\n"],"file":"PgMutationUpdateDeletePlugin.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgRecordFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgRecordFunctionConnectionPlugin","builder","pgForbidSetofFunctionsToReturnNull","hook","_","build","newWithHooks","getSafeAliasFromResolveInfo","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","nullableIf","condition","Type","Cursor","procedure","forEach","proc","returnsSet","namespace","returnTypeId","NodeType","recordFunctionReturnType","Error","name","EdgeType","recordFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","_args","_context","resolveInfo","safeAlias","__origin","isEdgeType","nodeType","pgIntrospection","recordFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","edgeType"],"mappings":";;;;;;;AAGA,MAAMA,MAAM,GAAGC,GAAG,IAAIC,MAAM,CAACC,IAAP,CAAYC,MAAM,CAACH,GAAD,CAAlB,EAAyBI,QAAzB,CAAkC,QAAlC,CAAtB;;IAEyBC,gC,GAAT,SAASA,gCAAT,CACdC,OADc,EAEd;AAAEC,EAAAA,kCAAkC,GAAG;AAAvC,CAFc,EAGd;AACAD,EAAAA,OAAO,CAACE,IAAR,CACE,MADF,EAEE,CAACC,CAAD,EAAIC,KAAJ,KAAc;AACZ,UAAM;AACJC,MAAAA,YADI;AAEJC,MAAAA,2BAFI;AAGJC,MAAAA,4BAA4B,EAAEC,0BAH1B;AAIJC,MAAAA,aAJI;AAKJC,MAAAA,OAAO,EAAE;AAAEC,QAAAA,iBAAF;AAAqBC,QAAAA,cAArB;AAAqCC,QAAAA;AAArC,OALL;AAMJC,MAAAA,UANI;AAOJC,MAAAA,MAAM,EAAEC,IAPJ;AAQJC,MAAAA,gBARI;AASJC,MAAAA,sBATI;AAUJC,MAAAA;AAVI,QAWFf,KAXJ;;AAaA,UAAMgB,UAAU,GAAG,CAACC,SAAD,EAAYC,IAAZ,KACjBD,SAAS,GAAGC,IAAH,GAAU,IAAIV,cAAJ,CAAmBU,IAAnB,CADrB;;AAEA,UAAMC,MAAM,GAAGd,aAAa,CAAC,QAAD,CAA5B;AAEAD,IAAAA,0BAA0B,CAACgB,SAA3B,CAAqCC,OAArC,CAA6CC,IAAI,IAAI;AACnD;AACA,UAAI,CAACA,IAAI,CAACC,UAAV,EAAsB;AACtB,UAAI,CAACD,IAAI,CAACE,SAAV,EAAqB;AACrB,UAAIZ,IAAI,CAACU,IAAD,EAAO,SAAP,CAAR,EAA2B;;AAE3B,UAAIA,IAAI,CAACG,YAAL,KAAsB,MAA1B,EAAkC;AAChC;AACA;AACA;AACD,OAVkD,CAWnD;AACA;AACA;;;AACA,YAAMC,QAAQ,GAAGrB,aAAa,CAC5BK,UAAU,CAACiB,wBAAX,CAAoCL,IAApC,CAD4B,CAA9B;;AAGA,UAAI,CAACI,QAAL,EAAe;AACb,cAAM,IAAIE,KAAJ,CACH,4BAA2BlB,UAAU,CAACiB,wBAAX,CAC1BL,IAD0B,CAE1B,UAASA,IAAI,CAACO,IAAK,oCAHjB,CAAN;AAKD;;AACD,YAAMC,QAAQ,GAAG7B,YAAY,CAC3BM,iBAD2B,EAE3B;AACEsB,QAAAA,IAAI,EAAEnB,UAAU,CAACqB,kBAAX,CAA8BT,IAA9B,CADR;AAEEU,QAAAA,WAAW,EAAG,OAAMN,QAAQ,CAACG,IAAK,4BAFpC;AAGEI,QAAAA,MAAM,EAAE,CAAC;AAAEC,UAAAA;AAAF,SAAD,KAAwB;AAC9B,iBAAO;AACLC,YAAAA,MAAM,EAAED,cAAc,CACpB,QADoB,EAEpB,CAAC;AAAEE,cAAAA;AAAF,aAAD,KAA0B;AACxBA,cAAAA,gBAAgB,CAAC,OAAO;AACtBC,gBAAAA,UAAU,EAAE,CAAC,IAAD;AADU,eAAP,CAAD,CAAhB;AAGA,qBAAO;AACLL,gBAAAA,WAAW,EAAE,iCADR;AAELM,gBAAAA,IAAI,EAAEnB,MAFD;;AAGLoB,gBAAAA,OAAO,CAACC,IAAD,EAAO;AACZ,yBAAOnD,MAAM,CAACoD,IAAI,CAACC,SAAL,CAAeF,IAAI,CAACG,QAApB,CAAD,CAAb;AACD;;AALI,eAAP;AAOD,aAbmB,EAcpB;AACEC,cAAAA,aAAa,EAAE;AADjB,aAdoB,CADjB;AAmBLC,YAAAA,IAAI,EAAE9B,OAAO,CACXf,KADW,EAEXkC,cAFW,EAGX,MAHW,EAIX;AACEF,cAAAA,WAAW,EAAG,SAAQN,QAAQ,CAACG,IAAK,4BADtC;AAEES,cAAAA,IAAI,EAAEtB,UAAU,CACd,CAACnB,kCADa,EAEd6B,QAFc,CAFlB;;AAMEa,cAAAA,OAAO,CAACC,IAAD,EAAOM,KAAP,EAAcC,QAAd,EAAwBC,WAAxB,EAAqC;AAC1C,sBAAMC,SAAS,GAAG/C,2BAA2B,CAC3C8C,WAD2C,CAA7C;AAGA,uBAAOR,IAAI,CAACS,SAAD,CAAX;AACD;;AAXH,aAJW,EAiBX,EAjBW,EAkBX,KAlBW;AAnBR,WAAP;AAwCD;AA5CH,OAF2B,EAgD3B;AACEC,QAAAA,QAAQ,EAAG,wCAAuCrC,gBAAgB,CAChES,IADgE,CAEhE,uGAAsGR,sBAAsB,CAC5HQ,IAD4H,EAE5H;AACEO,UAAAA,IAAI,EAAE;AADR,SAF4H,CAK5H,EARJ;AASEsB,QAAAA,UAAU,EAAE,IATd;AAUEC,QAAAA,QAAQ,EAAE1B,QAVZ;AAWE2B,QAAAA,eAAe,EAAE/B;AAXnB,OAhD2B,CAA7B;AA+DA;;AACArB,MAAAA,YAAY,CACVM,iBADU,EAEV;AACEsB,QAAAA,IAAI,EAAEnB,UAAU,CAAC4C,wBAAX,CAAoChC,IAApC,CADR;AAEEU,QAAAA,WAAW,EAAG,+BAA8BN,QAAQ,CAACG,IAAK,YAF5D;AAGEI,QAAAA,MAAM,EAAE,CAAC;AAAEC,UAAAA;AAAF,SAAD,KAAwB;AAC9B,iBAAO;AACLqB,YAAAA,KAAK,EAAExC,OAAO,CAACf,KAAD,EAAQkC,cAAR,EAAwB,OAAxB,EAAiC;AAC7CF,cAAAA,WAAW,EAAG,eAAcN,QAAQ,CAACG,IAAK,aADG;AAE7CS,cAAAA,IAAI,EAAE,IAAI9B,cAAJ,CACJ,IAAIC,WAAJ,CACEO,UAAU,CAAC,CAACnB,kCAAF,EAAsC6B,QAAtC,CADZ,CADI,CAFuC;;AAO7Ca,cAAAA,OAAO,CAACC,IAAD,EAAOM,KAAP,EAAcC,QAAd,EAAwBC,WAAxB,EAAqC;AAC1C,sBAAMC,SAAS,GAAG/C,2BAA2B,CAAC8C,WAAD,CAA7C;AACA,uBAAOR,IAAI,CAACA,IAAL,CAAUgB,GAAV,CAAcC,KAAK,IAAIA,KAAK,CAACR,SAAD,CAA5B,CAAP;AACD;;AAV4C,aAAjC,CADT;AAaLS,YAAAA,KAAK,EAAE3C,OAAO,CACZf,KADY,EAEZkC,cAFY,EAGZ,OAHY,EAIZ;AACEF,cAAAA,WAAW,EAAG,wCAAuCN,QAAQ,CAACG,IAAK,qCADrE;AAEES,cAAAA,IAAI,EAAE,IAAI9B,cAAJ,CACJ,IAAIC,WAAJ,CAAgB,IAAID,cAAJ,CAAmBsB,QAAnB,CAAhB,CADI,CAFR;;AAKES,cAAAA,OAAO,CAACC,IAAD,EAAOM,KAAP,EAAcC,QAAd,EAAwBC,WAAxB,EAAqC;AAC1C,sBAAMC,SAAS,GAAG/C,2BAA2B,CAC3C8C,WAD2C,CAA7C;AAGA,uBAAOR,IAAI,CAACA,IAAL,CAAUgB,GAAV,CAAcC,KAAK,KAAK;AAC7Bd,kBAAAA,QAAQ,EAAEc,KAAK,CAACd,QADa;AAE7B,qBAAGc,KAAK,CAACR,SAAD;AAFqB,iBAAL,CAAnB,CAAP;AAID;;AAbH,aAJY,EAmBZ,EAnBY,EAoBZ,KApBY,EAqBZ;AACEU,cAAAA,WAAW,EAAE;AADf,aArBY;AAbT,WAAP;AAuCD;AA3CH,OAFU,EA+CV;AACET,QAAAA,QAAQ,EAAG,uCAAsCrC,gBAAgB,CAC/DS,IAD+D,CAE/D,uGAAsGR,sBAAsB,CAC5HQ,IAD4H,EAE5H;AACEO,UAAAA,IAAI,EAAE;AADR,SAF4H,CAK5H,EARJ;AASE+B,QAAAA,gBAAgB,EAAE,IATpB;AAUEC,QAAAA,QAAQ,EAAE/B,QAVZ;AAWEsB,QAAAA,QAAQ,EAAE1B,QAXZ;AAYE2B,QAAAA,eAAe,EAAE/B;AAZnB,OA/CU,CAAZ;AA8DD,KAtJD;AAuJA,WAAOvB,CAAP;AACD,GA5KH,EA6KE,CAAC,4BAAD,CA7KF;AA+KD,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgRecordFunctionConnectionPlugin(\n builder,\n { pgForbidSetofFunctionsToReturnNull = false }\n) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n getSafeAliasFromResolveInfo,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n graphql: { GraphQLObjectType, GraphQLNonNull, GraphQLList },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const nullableIf = (condition, Type) =>\n condition ? Type : new GraphQLNonNull(Type);\n const Cursor = getTypeByName(\"Cursor\");\n\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n if (proc.returnTypeId !== \"2249\") {\n // Does not return a record type; defer handling to\n // PgTablesPlugin and PgScalarFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType = getTypeByName(\n inflection.recordFunctionReturnType(proc)\n );\n if (!NodeType) {\n throw new Error(\n `Do not have a node type '${inflection.recordFunctionReturnType(\n proc\n )}' for '${proc.name}' so cannot create connection type`\n );\n }\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: pgField(\n build,\n fieldWithHooks,\n \"node\",\n {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: nullableIf(\n !pgForbidSetofFunctionsToReturnNull,\n NodeType\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data[safeAlias];\n },\n },\n {},\n false\n ),\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(\n new GraphQLList(\n nullableIf(!pgForbidSetofFunctionsToReturnNull, NodeType)\n )\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);\n return data.data.map(entry => entry[safeAlias]);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data.data.map(entry => ({\n __cursor: entry.__cursor,\n ...entry[safeAlias],\n }));\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgRecordFunctionConnection\"]\n );\n}: Plugin);\n"],"file":"PgRecordFunctionConnectionPlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/PgRecordFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgRecordFunctionConnectionPlugin","builder","pgForbidSetofFunctionsToReturnNull","hook","_","build","newWithHooks","getSafeAliasFromResolveInfo","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","nullableIf","condition","Type","Cursor","procedure","forEach","proc","returnsSet","namespace","returnTypeId","NodeType","recordFunctionReturnType","Error","name","EdgeType","recordFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","_args","_context","resolveInfo","safeAlias","__origin","isEdgeType","nodeType","pgIntrospection","recordFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","isPgRowConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgRecordFunctionConnectionPlugin(\n builder,\n { pgForbidSetofFunctionsToReturnNull = false }\n) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n getSafeAliasFromResolveInfo,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n graphql: { GraphQLObjectType, GraphQLNonNull, GraphQLList },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const nullableIf = (condition, Type) =>\n condition ? Type : new GraphQLNonNull(Type);\n const Cursor = getTypeByName(\"Cursor\");\n\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n if (proc.returnTypeId !== \"2249\") {\n // Does not return a record type; defer handling to\n // PgTablesPlugin and PgScalarFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType = getTypeByName(\n inflection.recordFunctionReturnType(proc)\n );\n if (!NodeType) {\n throw new Error(\n `Do not have a node type '${inflection.recordFunctionReturnType(\n proc\n )}' for '${proc.name}' so cannot create connection type`\n );\n }\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: pgField(\n build,\n fieldWithHooks,\n \"node\",\n {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: nullableIf(\n !pgForbidSetofFunctionsToReturnNull,\n NodeType\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data[safeAlias];\n },\n },\n {},\n false\n ),\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.recordFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(\n new GraphQLList(\n nullableIf(!pgForbidSetofFunctionsToReturnNull, NodeType)\n )\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);\n return data.data.map(entry => entry[safeAlias]);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data, _args, _context, resolveInfo) {\n const safeAlias = getSafeAliasFromResolveInfo(\n resolveInfo\n );\n return data.data.map(entry => ({\n __cursor: entry.__cursor,\n ...entry[safeAlias],\n }));\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n isPgRowConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgRecordFunctionConnection\"]\n );\n}: Plugin);\n"],"file":"PgRecordFunctionConnectionPlugin.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgScalarFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgScalarFunctionConnectionPlugin","builder","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","GraphQLString","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","Cursor","procedure","forEach","proc","returnsSet","namespace","returnType","typeById","returnTypeId","returnTypeTable","classById","classId","id","NodeType","EdgeType","name","scalarFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","value","__origin","isEdgeType","nodeType","pgIntrospection","scalarFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgScalarFunctionConnectionPlugin(builder) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n graphql: {\n GraphQLObjectType,\n GraphQLNonNull,\n GraphQLList,\n GraphQLString,\n },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const Cursor = getTypeByName(\"Cursor\");\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n const returnType =\n introspectionResultsByKind.typeById[proc.returnTypeId];\n const returnTypeTable =\n introspectionResultsByKind.classById[returnType.classId];\n if (returnTypeTable) {\n // Just use the standard table connection from PgTablesPlugin\n return;\n }\n if (returnType.id === \"2249\") {\n // Defer handling to PgRecordFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType =\n pgGetGqlTypeByTypeIdAndModifier(returnType.id, null) || GraphQLString;\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: NodeType,\n resolve(data) {\n return data.value;\n },\n },\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(new GraphQLList(NodeType)),\n resolve(data) {\n return data.data.map(entry => entry.value);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data) {\n return data.data;\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgScalarFunctionConnection\"],\n [],\n [\"PgTypes\"]\n );\n}: Plugin);\n"],"file":"PgScalarFunctionConnectionPlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/PgScalarFunctionConnectionPlugin.js"],"names":["base64","str","Buffer","from","String","toString","PgScalarFunctionConnectionPlugin","builder","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","graphql","GraphQLObjectType","GraphQLNonNull","GraphQLList","GraphQLString","inflection","pgOmit","omit","describePgEntity","sqlCommentByAddingTags","pgField","Cursor","procedure","forEach","proc","returnsSet","namespace","returnType","typeById","returnTypeId","returnTypeTable","classById","classId","id","NodeType","EdgeType","name","scalarFunctionEdge","description","fields","fieldWithHooks","cursor","addDataGenerator","usesCursor","type","resolve","data","JSON","stringify","__cursor","isCursorField","node","value","__origin","isEdgeType","nodeType","pgIntrospection","scalarFunctionConnection","nodes","map","entry","edges","hoistCursor","isConnectionType","isPgRowConnectionType","edgeType"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nconst base64 = str => Buffer.from(String(str)).toString(\"base64\");\n\nexport default (function PgScalarFunctionConnectionPlugin(builder) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n graphql: {\n GraphQLObjectType,\n GraphQLNonNull,\n GraphQLList,\n GraphQLString,\n },\n inflection,\n pgOmit: omit,\n describePgEntity,\n sqlCommentByAddingTags,\n pgField,\n } = build;\n\n const Cursor = getTypeByName(\"Cursor\");\n introspectionResultsByKind.procedure.forEach(proc => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!proc.returnsSet) return;\n if (!proc.namespace) return;\n if (omit(proc, \"execute\")) return;\n\n const returnType =\n introspectionResultsByKind.typeById[proc.returnTypeId];\n const returnTypeTable =\n introspectionResultsByKind.classById[returnType.classId];\n if (returnTypeTable) {\n // Just use the standard table connection from PgTablesPlugin\n return;\n }\n if (returnType.id === \"2249\") {\n // Defer handling to PgRecordFunctionConnectionPlugin\n return;\n }\n // TODO: PG10 doesn't support the equivalent of pg_attribute.atttypemod\n // on function arguments and return types, however maybe a later\n // version of PG will?\n const NodeType =\n pgGetGqlTypeByTypeIdAndModifier(returnType.id, null) || GraphQLString;\n const EdgeType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionEdge(proc),\n description: `A \\`${NodeType.name}\\` edge in the connection.`,\n fields: ({ fieldWithHooks }) => {\n return {\n cursor: fieldWithHooks(\n \"cursor\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => ({\n usesCursor: [true],\n }));\n return {\n description: \"A cursor for use in pagination.\",\n type: Cursor,\n resolve(data) {\n return base64(JSON.stringify(data.__cursor));\n },\n };\n },\n {\n isCursorField: true,\n }\n ),\n node: {\n description: `The \\`${NodeType.name}\\` at the end of the edge.`,\n type: NodeType,\n resolve(data) {\n return data.value;\n },\n },\n };\n },\n },\n {\n __origin: `Adding function result edge type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isEdgeType: true,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n\n /*const ConnectionType = */\n newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.scalarFunctionConnection(proc),\n description: `A connection to a list of \\`${NodeType.name}\\` values.`,\n fields: ({ fieldWithHooks }) => {\n return {\n nodes: pgField(build, fieldWithHooks, \"nodes\", {\n description: `A list of \\`${NodeType.name}\\` objects.`,\n type: new GraphQLNonNull(new GraphQLList(NodeType)),\n resolve(data) {\n return data.data.map(entry => entry.value);\n },\n }),\n edges: pgField(\n build,\n fieldWithHooks,\n \"edges\",\n {\n description: `A list of edges which contains the \\`${NodeType.name}\\` and cursor to aid in pagination.`,\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(EdgeType))\n ),\n resolve(data) {\n return data.data;\n },\n },\n {},\n false,\n {\n hoistCursor: true,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding function connection type for ${describePgEntity(\n proc\n )}. You can rename the function's GraphQL field (and its dependent types) via a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n proc,\n {\n name: \"newNameHere\",\n }\n )}`,\n isConnectionType: true,\n isPgRowConnectionType: true,\n edgeType: EdgeType,\n nodeType: NodeType,\n pgIntrospection: proc,\n }\n );\n });\n return _;\n },\n [\"PgScalarFunctionConnection\"],\n [],\n [\"PgTypes\"]\n );\n}: Plugin);\n"],"file":"PgScalarFunctionConnectionPlugin.js"}
|
|
@@ -41,6 +41,7 @@ var PgTypesPlugin = function PgTypesPlugin(builder, {
|
|
|
41
41
|
pgExtendedTypes = true,
|
|
42
42
|
// Adding hstore support is technically a breaking change; this allows people to opt out easily:
|
|
43
43
|
pgSkipHstore = false,
|
|
44
|
+
pgUseCustomNetworkScalars = false,
|
|
44
45
|
disableIssue390Fix = false
|
|
45
46
|
}) {
|
|
46
47
|
// XXX: most of this should be in an "init" hook, not a "build" hook
|
|
@@ -291,7 +292,10 @@ var PgTypesPlugin = function PgTypesPlugin(builder, {
|
|
|
291
292
|
const SimpleTime = stringType(inflection.builtin("Time"), "The exact time of day, does not include the date. May or may not have a timezone offset.");
|
|
292
293
|
const SimpleJSON = stringType(inflection.builtin("JSON"), "A JavaScript object encoded in the JSON format as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf).");
|
|
293
294
|
const SimpleUUID = stringType(inflection.builtin("UUID"), "A universally unique identifier as defined by [RFC 4122](https://tools.ietf.org/html/rfc4122).");
|
|
294
|
-
const InetType = stringType(inflection.builtin("InternetAddress"), "An IPv4 or IPv6 host address, and optionally its subnet.");
|
|
295
|
+
const InetType = stringType(inflection.builtin("InternetAddress"), "An IPv4 or IPv6 host address, and optionally its subnet.");
|
|
296
|
+
const CidrType = pgUseCustomNetworkScalars ? stringType(inflection.builtin("CidrAddress"), "An IPv4 or IPv6 CIDR address.") : GraphQLString;
|
|
297
|
+
const MacAddrType = pgUseCustomNetworkScalars ? stringType(inflection.builtin("MacAddress"), "A 6-byte MAC address.") : GraphQLString;
|
|
298
|
+
const MacAddr8Type = pgUseCustomNetworkScalars ? stringType(inflection.builtin("MacAddress8"), "An 8-byte MAC address.") : GraphQLString; // pgExtendedTypes might change what types we use for things
|
|
295
299
|
|
|
296
300
|
const JSONType = pgExtendedTypes ? (0, _GraphQLJSON.default)(graphql, inflection.builtin("JSON")) : SimpleJSON;
|
|
297
301
|
const UUIDType = SimpleUUID; // GraphQLUUID
|
|
@@ -380,7 +384,10 @@ var PgTypesPlugin = function PgTypesPlugin(builder, {
|
|
|
380
384
|
// varchar
|
|
381
385
|
"600": Point,
|
|
382
386
|
// point
|
|
383
|
-
"869": InetType
|
|
387
|
+
"869": InetType,
|
|
388
|
+
"650": CidrType,
|
|
389
|
+
"829": MacAddrType,
|
|
390
|
+
"774": MacAddr8Type
|
|
384
391
|
};
|
|
385
392
|
const oidInputLookup = {
|
|
386
393
|
"1186": GQLIntervalInput,
|
|
@@ -31,6 +31,7 @@ export default (function PgTypesPlugin(
|
|
|
31
31
|
pgExtendedTypes = true,
|
|
32
32
|
// Adding hstore support is technically a breaking change; this allows people to opt out easily:
|
|
33
33
|
pgSkipHstore = false,
|
|
34
|
+
pgUseCustomNetworkScalars = false,
|
|
34
35
|
disableIssue390Fix = false,
|
|
35
36
|
}
|
|
36
37
|
) {
|
|
@@ -337,6 +338,21 @@ export default (function PgTypesPlugin(
|
|
|
337
338
|
inflection.builtin("InternetAddress"),
|
|
338
339
|
"An IPv4 or IPv6 host address, and optionally its subnet."
|
|
339
340
|
);
|
|
341
|
+
const CidrType = pgUseCustomNetworkScalars
|
|
342
|
+
? stringType(
|
|
343
|
+
inflection.builtin("CidrAddress"),
|
|
344
|
+
"An IPv4 or IPv6 CIDR address."
|
|
345
|
+
)
|
|
346
|
+
: GraphQLString;
|
|
347
|
+
const MacAddrType = pgUseCustomNetworkScalars
|
|
348
|
+
? stringType(inflection.builtin("MacAddress"), "A 6-byte MAC address.")
|
|
349
|
+
: GraphQLString;
|
|
350
|
+
const MacAddr8Type = pgUseCustomNetworkScalars
|
|
351
|
+
? stringType(
|
|
352
|
+
inflection.builtin("MacAddress8"),
|
|
353
|
+
"An 8-byte MAC address."
|
|
354
|
+
)
|
|
355
|
+
: GraphQLString;
|
|
340
356
|
|
|
341
357
|
// pgExtendedTypes might change what types we use for things
|
|
342
358
|
const JSONType = pgExtendedTypes
|
|
@@ -423,6 +439,9 @@ export default (function PgTypesPlugin(
|
|
|
423
439
|
"600": Point, // point
|
|
424
440
|
|
|
425
441
|
"869": InetType,
|
|
442
|
+
"650": CidrType,
|
|
443
|
+
"829": MacAddrType,
|
|
444
|
+
"774": MacAddr8Type,
|
|
426
445
|
};
|
|
427
446
|
const oidInputLookup = {
|
|
428
447
|
"1186": GQLIntervalInput, // interval
|