graphile-build-pg 4.12.0 → 4.12.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 +10 -3
- package/node8plus/GraphQLJSON.js.map +1 -1
- package/node8plus/QueryBuilder.js +3 -4
- package/node8plus/QueryBuilder.js.map +1 -1
- package/node8plus/index.d.ts +2 -6
- package/node8plus/index.js +84 -83
- package/node8plus/index.js.map +1 -1
- package/node8plus/inflections.js +1 -1
- package/node8plus/inflections.js.flow +1 -3
- package/node8plus/inflections.js.map +1 -1
- package/node8plus/omit.js +2 -2
- package/node8plus/omit.js.flow +1 -1
- package/node8plus/omit.js.map +1 -1
- package/node8plus/plugins/PgAllRows.js.flow +2 -3
- package/node8plus/plugins/PgAllRows.js.map +1 -1
- package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -2
- package/node8plus/plugins/PgBackwardRelationPlugin.js.flow +22 -18
- package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgBasicsPlugin.js +3 -3
- package/node8plus/plugins/PgBasicsPlugin.js.flow +120 -120
- package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnsPlugin.js +1 -1
- package/node8plus/plugins/PgColumnsPlugin.js.flow +5 -2
- package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -4
- package/node8plus/plugins/PgComputedColumnsPlugin.js.flow +1 -1
- package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgCondition.js.flow +4 -4
- package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderBy.js +1 -1
- package/node8plus/plugins/PgConnectionArgOrderBy.js.flow +1 -1
- package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +2 -1
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.flow +2 -1
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
- package/node8plus/plugins/PgForwardRelationPlugin.js.flow +9 -8
- package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgIntrospectionPlugin.js +5 -5
- package/node8plus/plugins/PgIntrospectionPlugin.js.flow +13 -12
- package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgJWTPlugin.js.flow +2 -3
- package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationCreatePlugin.js.flow +2 -3
- package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +2 -1
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.flow +2 -1
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +4 -4
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +14 -19
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +4 -3
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.flow +3 -3
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.flow +3 -5
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgQueryProceduresPlugin.js +2 -2
- package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.flow +4 -6
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js +3 -3
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js.flow +5 -5
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
- package/node8plus/plugins/PgRowByUniqueConstraint.js.flow +2 -3
- package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
- package/node8plus/plugins/PgRowNode.js.flow +9 -11
- package/node8plus/plugins/PgRowNode.js.map +1 -1
- package/node8plus/plugins/PgTablesPlugin.js +13 -13
- package/node8plus/plugins/PgTablesPlugin.js.flow +8 -13
- package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
- package/node8plus/plugins/PgTypesPlugin.js +7 -7
- package/node8plus/plugins/PgTypesPlugin.js.flow +28 -34
- package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
- package/node8plus/plugins/debugSql.js +1 -1
- package/node8plus/plugins/introspectionQuery.js.map +1 -1
- package/node8plus/plugins/makeProcField.js +5 -5
- package/node8plus/plugins/makeProcField.js.flow +2 -6
- package/node8plus/plugins/makeProcField.js.map +1 -1
- package/node8plus/plugins/pgField.js.flow +2 -4
- package/node8plus/plugins/pgField.js.map +1 -1
- package/node8plus/plugins/viaTemporaryTable.js +2 -2
- package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
- package/node8plus/queryFromResolveDataFactory.js +3 -4
- package/node8plus/queryFromResolveDataFactory.js.flow +474 -464
- package/node8plus/queryFromResolveDataFactory.js.map +1 -1
- package/node8plus/utils.js +1 -1
- package/node8plus/utils.js.flow +1 -1
- package/node8plus/utils.js.map +1 -1
- package/node8plus/withPgClient.js +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgMutationCreatePlugin.js"],"names":["debug","PgMutationCreatePlugin","builder","pgDisableDefaultMutations","hook","fields","build","context","extend","newWithHooks","parseResolveInfo","pgIntrospectionResultsByKind","pgGetGqlTypeByTypeIdAndModifier","pgGetGqlInputTypeByTypeIdAndModifier","pgSql","sql","gql2pg","graphql","GraphQLObjectType","GraphQLInputObjectType","GraphQLNonNull","GraphQLString","pgColumnFilter","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","pgViaTemporaryTable","viaTemporaryTable","describePgEntity","sqlCommentByAddingTags","pgField","scope","isRootMutation","fieldWithHooks","class","reduce","memo","table","namespace","isSelectable","isInsertable","Table","type","id","name","TableInput","tableTypeName","tableType","InputType","createInputType","description","wrapDescription","clientMutationId","tableFieldName","__origin","isPgCreateInputType","pgInflection","pgIntrospection","PayloadType","createPayloadType","tableName","isPgCreatePayloadResultField","pgFieldIntrospection","isMutationPayload","isPgCreatePayloadType","fieldName","createField","getDataFromParsedResolveInfoFragment","relevantAttributes","attributes","filter","attr","args","input","resolve","data","resolveContext","resolveInfo","pgClient","parsedResolveInfoFragment","resolveData","insertedRowAlias","identifier","Symbol","query","rootValue","sqlColumns","sqlValues","inputData","forEach","column","val","Object","prototype","hasOwnProperty","call","push","typeModifier","mutationQuery","length","fragment","join","row","rows","e","isPgCreateMutationField"],"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 (function PgMutationCreatePlugin(\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 extend,\n newWithHooks,\n parseResolveInfo,\n pgIntrospectionResultsByKind,\n pgGetGqlTypeByTypeIdAndModifier,\n pgGetGqlInputTypeByTypeIdAndModifier,\n pgSql: sql,\n gql2pg,\n graphql: {\n GraphQLObjectType,\n GraphQLInputObjectType,\n GraphQLNonNull,\n GraphQLString,\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 pgIntrospectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.namespace) return memo;\n if (!table.isSelectable) return memo;\n if (!table.isInsertable || omit(table, \"create\")) return memo;\n\n const Table = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n if (!Table) {\n debug(\n `There was no table type for table '${table.namespace.name}.${table.name}', so we're not generating a create mutation for it.`\n );\n return memo;\n }\n const TableInput = pgGetGqlInputTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableInput) {\n debug(\n `There was no input type for table '${table.namespace.name}.${table.name}', so we're going to omit it from the create mutation.`\n );\n }\n const tableTypeName = inflection.tableType(table);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n name: inflection.createInputType(table),\n description: build.wrapDescription(\n `All input for the create \\`${tableTypeName}\\` mutation.`,\n \"type\"\n ),\n fields: {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n ...(TableInput\n ? {\n [inflection.tableFieldName(table)]: {\n description: build.wrapDescription(\n `The \\`${tableTypeName}\\` to be created by this mutation.`,\n \"field\"\n ),\n type: new GraphQLNonNull(TableInput),\n },\n }\n : null),\n },\n },\n {\n __origin: `Adding table create 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 isPgCreateInputType: true,\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n }\n );\n const PayloadType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.createPayloadType(table),\n description: build.wrapDescription(\n `The output of our create \\`${tableTypeName}\\` mutation.`,\n \"type\"\n ),\n fields: ({ fieldWithHooks }) => {\n const tableName = inflection.tableFieldName(table);\n return {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: build.wrapDescription(\n `The \\`${tableTypeName}\\` that was created by this mutation.`,\n \"field\"\n ),\n type: Table,\n },\n {\n isPgCreatePayloadResultField: true,\n pgFieldIntrospection: table,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding table create 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\\nor disable the built-in create mutation via:\\n\\n ${sqlCommentByAddingTags(\n table,\n { omit: \"create\" }\n )}`,\n isMutationPayload: true,\n isPgCreatePayloadType: true,\n pgIntrospection: table,\n }\n );\n const fieldName = inflection.createField(table);\n memo = build.extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const { getDataFromParsedResolveInfoFragment } = context;\n const relevantAttributes = table.attributes.filter(\n attr =>\n pgColumnFilter(attr, build, context) &&\n !omit(attr, \"create\")\n );\n return {\n description: build.wrapDescription(\n `Creates a single \\`${tableTypeName}\\`.`,\n \"field\"\n ),\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(data, args, resolveContext, resolveInfo) {\n const { input } = args;\n const { pgClient } = resolveContext;\n const parsedResolveInfoFragment = parseResolveInfo(\n resolveInfo\n );\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n PayloadType\n );\n const insertedRowAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n insertedRowAlias,\n insertedRowAlias,\n resolveData,\n {},\n null,\n resolveContext,\n resolveInfo.rootValue\n );\n const sqlColumns = [];\n const sqlValues = [];\n const inputData = input[inflection.tableFieldName(table)];\n relevantAttributes.forEach(attr => {\n const fieldName = inflection.column(attr);\n const val = inputData[fieldName];\n if (\n Object.prototype.hasOwnProperty.call(\n inputData,\n fieldName\n )\n ) {\n sqlColumns.push(sql.identifier(attr.name));\n sqlValues.push(\n gql2pg(val, attr.type, attr.typeModifier)\n );\n }\n });\n\n const mutationQuery = sql.query`\\\ninsert into ${sql.identifier(table.namespace.name, table.name)} ${\n sqlColumns.length\n ? sql.fragment`(${sql.join(\n sqlColumns,\n \", \"\n )}) values(${sql.join(sqlValues, \", \")})`\n : sql.fragment`default values`\n } returning *`;\n\n let row;\n try {\n await pgClient.query(\"SAVEPOINT graphql_mutation\");\n const rows = await viaTemporaryTable(\n pgClient,\n sql.identifier(table.namespace.name, table.name),\n mutationQuery,\n insertedRowAlias,\n query\n );\n row = rows[0];\n await pgClient.query(\n \"RELEASE SAVEPOINT graphql_mutation\"\n );\n } catch (e) {\n await pgClient.query(\n \"ROLLBACK TO SAVEPOINT graphql_mutation\"\n );\n throw e;\n }\n return {\n clientMutationId: input.clientMutationId,\n data: row,\n };\n },\n };\n },\n {\n pgFieldIntrospection: table,\n isPgCreateMutationField: true,\n }\n ),\n },\n `Adding create mutation for ${describePgEntity(\n table\n )}. You can omit this default mutation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n omit: \"create\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding default 'create' mutation to root mutation`\n );\n },\n [\"PgMutationCreate\"],\n [],\n [\"PgTables\"]\n );\n}: Plugin);\n"],"file":"PgMutationCreatePlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/PgMutationCreatePlugin.js"],"names":["debug","PgMutationCreatePlugin","builder","pgDisableDefaultMutations","hook","fields","build","context","extend","newWithHooks","parseResolveInfo","pgIntrospectionResultsByKind","pgGetGqlTypeByTypeIdAndModifier","pgGetGqlInputTypeByTypeIdAndModifier","pgSql","sql","gql2pg","graphql","GraphQLObjectType","GraphQLInputObjectType","GraphQLNonNull","GraphQLString","pgColumnFilter","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","pgViaTemporaryTable","viaTemporaryTable","describePgEntity","sqlCommentByAddingTags","pgField","scope","isRootMutation","fieldWithHooks","class","reduce","memo","table","namespace","isSelectable","isInsertable","Table","type","id","name","TableInput","tableTypeName","tableType","InputType","createInputType","description","wrapDescription","clientMutationId","tableFieldName","__origin","isPgCreateInputType","pgInflection","pgIntrospection","PayloadType","createPayloadType","tableName","isPgCreatePayloadResultField","pgFieldIntrospection","isMutationPayload","isPgCreatePayloadType","fieldName","createField","getDataFromParsedResolveInfoFragment","relevantAttributes","attributes","filter","attr","args","input","resolve","data","resolveContext","resolveInfo","pgClient","parsedResolveInfoFragment","resolveData","insertedRowAlias","identifier","Symbol","query","rootValue","sqlColumns","sqlValues","inputData","forEach","column","val","Object","prototype","hasOwnProperty","call","push","typeModifier","mutationQuery","length","fragment","join","row","rows","e","isPgCreateMutationField"],"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 (function PgMutationCreatePlugin(\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 extend,\n newWithHooks,\n parseResolveInfo,\n pgIntrospectionResultsByKind,\n pgGetGqlTypeByTypeIdAndModifier,\n pgGetGqlInputTypeByTypeIdAndModifier,\n pgSql: sql,\n gql2pg,\n graphql: {\n GraphQLObjectType,\n GraphQLInputObjectType,\n GraphQLNonNull,\n GraphQLString,\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 pgIntrospectionResultsByKind.class.reduce((memo, table) => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.namespace) return memo;\n if (!table.isSelectable) return memo;\n if (!table.isInsertable || omit(table, \"create\")) return memo;\n\n const Table = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n if (!Table) {\n debug(\n `There was no table type for table '${table.namespace.name}.${table.name}', so we're not generating a create mutation for it.`\n );\n return memo;\n }\n const TableInput = pgGetGqlInputTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n if (!TableInput) {\n debug(\n `There was no input type for table '${table.namespace.name}.${table.name}', so we're going to omit it from the create mutation.`\n );\n }\n const tableTypeName = inflection.tableType(table);\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n name: inflection.createInputType(table),\n description: build.wrapDescription(\n `All input for the create \\`${tableTypeName}\\` mutation.`,\n \"type\"\n ),\n fields: {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n ...(TableInput\n ? {\n [inflection.tableFieldName(table)]: {\n description: build.wrapDescription(\n `The \\`${tableTypeName}\\` to be created by this mutation.`,\n \"field\"\n ),\n type: new GraphQLNonNull(TableInput),\n },\n }\n : null),\n },\n },\n {\n __origin: `Adding table create 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 isPgCreateInputType: true,\n pgInflection: table, // TODO:v5: remove - TYPO!\n pgIntrospection: table,\n }\n );\n const PayloadType = newWithHooks(\n GraphQLObjectType,\n {\n name: inflection.createPayloadType(table),\n description: build.wrapDescription(\n `The output of our create \\`${tableTypeName}\\` mutation.`,\n \"type\"\n ),\n fields: ({ fieldWithHooks }) => {\n const tableName = inflection.tableFieldName(table);\n return {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: build.wrapDescription(\n `The \\`${tableTypeName}\\` that was created by this mutation.`,\n \"field\"\n ),\n type: Table,\n },\n {\n isPgCreatePayloadResultField: true,\n pgFieldIntrospection: table,\n }\n ),\n };\n },\n },\n {\n __origin: `Adding table create 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\\nor disable the built-in create mutation via:\\n\\n ${sqlCommentByAddingTags(\n table,\n { omit: \"create\" }\n )}`,\n isMutationPayload: true,\n isPgCreatePayloadType: true,\n pgIntrospection: table,\n }\n );\n const fieldName = inflection.createField(table);\n memo = build.extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n context => {\n const { getDataFromParsedResolveInfoFragment } = context;\n const relevantAttributes = table.attributes.filter(\n attr =>\n pgColumnFilter(attr, build, context) &&\n !omit(attr, \"create\")\n );\n return {\n description: build.wrapDescription(\n `Creates a single \\`${tableTypeName}\\`.`,\n \"field\"\n ),\n type: PayloadType,\n args: {\n input: {\n type: new GraphQLNonNull(InputType),\n },\n },\n async resolve(data, args, resolveContext, resolveInfo) {\n const { input } = args;\n const { pgClient } = resolveContext;\n const parsedResolveInfoFragment =\n parseResolveInfo(resolveInfo);\n parsedResolveInfoFragment.args = args; // Allow overriding via makeWrapResolversPlugin\n const resolveData = getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n PayloadType\n );\n const insertedRowAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n insertedRowAlias,\n insertedRowAlias,\n resolveData,\n {},\n null,\n resolveContext,\n resolveInfo.rootValue\n );\n const sqlColumns = [];\n const sqlValues = [];\n const inputData = input[inflection.tableFieldName(table)];\n relevantAttributes.forEach(attr => {\n const fieldName = inflection.column(attr);\n const val = inputData[fieldName];\n if (\n Object.prototype.hasOwnProperty.call(\n inputData,\n fieldName\n )\n ) {\n sqlColumns.push(sql.identifier(attr.name));\n sqlValues.push(\n gql2pg(val, attr.type, attr.typeModifier)\n );\n }\n });\n\n const mutationQuery = sql.query`\\\ninsert into ${sql.identifier(table.namespace.name, table.name)} ${\n sqlColumns.length\n ? sql.fragment`(${sql.join(\n sqlColumns,\n \", \"\n )}) values(${sql.join(sqlValues, \", \")})`\n : sql.fragment`default values`\n } returning *`;\n\n let row;\n try {\n await pgClient.query(\"SAVEPOINT graphql_mutation\");\n const rows = await viaTemporaryTable(\n pgClient,\n sql.identifier(table.namespace.name, table.name),\n mutationQuery,\n insertedRowAlias,\n query\n );\n row = rows[0];\n await pgClient.query(\n \"RELEASE SAVEPOINT graphql_mutation\"\n );\n } catch (e) {\n await pgClient.query(\n \"ROLLBACK TO SAVEPOINT graphql_mutation\"\n );\n throw e;\n }\n return {\n clientMutationId: input.clientMutationId,\n data: row,\n };\n },\n };\n },\n {\n pgFieldIntrospection: table,\n isPgCreateMutationField: true,\n }\n ),\n },\n `Adding create mutation for ${describePgEntity(\n table\n )}. You can omit this default mutation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n table,\n {\n omit: \"create\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding default 'create' mutation to root mutation`\n );\n },\n [\"PgMutationCreate\"],\n [],\n [\"PgTables\"]\n );\n}: Plugin);\n"],"file":"PgMutationCreatePlugin.js"}
|
|
@@ -68,7 +68,8 @@ var PgMutationPayloadEdgePlugin = function PgMutationPayloadEdgePlugin(builder,
|
|
|
68
68
|
const primaryKeys = primaryKeyConstraint && primaryKeyConstraint.keyAttributes;
|
|
69
69
|
const canOrderBy = !omit(table, "order");
|
|
70
70
|
const fieldName = inflection.edgeField(table);
|
|
71
|
-
const
|
|
71
|
+
const primaryKeyAsc = inflection.builtin("PRIMARY_KEY_ASC");
|
|
72
|
+
const defaultValueEnum = canOrderBy && (TableOrderByType.getValues().find(v => v.name === primaryKeyAsc) || TableOrderByType.getValues()[0]);
|
|
72
73
|
return extend(fields, {
|
|
73
74
|
[fieldName]: pgField(build, fieldWithHooks, fieldName, {
|
|
74
75
|
description: build.wrapDescription(`An edge for our \`${tableTypeName}\`. May be used by Relay 1.`, "field"),
|
|
@@ -68,9 +68,10 @@ export default (function PgMutationPayloadEdgePlugin(
|
|
|
68
68
|
const canOrderBy = !omit(table, "order");
|
|
69
69
|
|
|
70
70
|
const fieldName = inflection.edgeField(table);
|
|
71
|
+
const primaryKeyAsc = inflection.builtin("PRIMARY_KEY_ASC");
|
|
71
72
|
const defaultValueEnum =
|
|
72
73
|
canOrderBy &&
|
|
73
|
-
(TableOrderByType.getValues().find(v => v.name ===
|
|
74
|
+
(TableOrderByType.getValues().find(v => v.name === primaryKeyAsc) ||
|
|
74
75
|
TableOrderByType.getValues()[0]);
|
|
75
76
|
return extend(
|
|
76
77
|
fields,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgMutationPayloadEdgePlugin.js"],"names":["PgMutationPayloadEdgePlugin","builder","pgSimpleCollections","disableIssue397Fix","hook","fields","build","context","extend","getSafeAliasFromResolveInfo","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgSql","sql","graphql","GraphQLList","GraphQLNonNull","inflection","pgOmit","omit","describePgEntity","pgField","scope","isMutationPayload","pgIntrospection","pgIntrospectionTable","fieldWithHooks","Self","table","kind","namespace","isSelectable","returnTypeId","typeId","returnsSet","simpleCollections","tags","hasConnections","TableType","type","id","tableTypeName","name","TableOrderByType","orderByType","TableEdgeType","edge","primaryKeyConstraint","primaryKeys","keyAttributes","canOrderBy","fieldName","edgeField","defaultValueEnum","getValues","find","v","description","wrapDescription","args","orderBy","defaultValue","value","resolve","data","rawOrderBy","_context","resolveInfo","safeAlias","Array","isArray","order","some","item","alias","filter","__identifiers","__cursor","map","join","isPgMutationPayloadEdgeField","pgFieldIntrospection","withQueryBuilder","queryBuilder","parsedResolveInfoFragment","aliases","expressions","unique","forEach","specs","itemIsUnique","orders","col","_ascending","expr","fragment","getTableAlias","identifier","push","key","length","select","a","literal"],"mappings":";;;;;;;AAEA;;;;IAEyBA,2B,GAAT,SAASA,2BAAT,CACdC,OADc,EAEd;AAAEC,EAAAA,mBAAF;AAAuBC,EAAAA;AAAvB,CAFc,EAGd;AACAF,EAAAA,OAAO,CAACG,IAAR,CACE,0BADF,EAEE,CAACC,MAAD,EAASC,KAAT,EAAgBC,OAAhB,KAA4B;AAC1B,UAAM;AACJC,MAAAA,MADI;AAEJC,MAAAA,2BAFI;AAGJC,MAAAA,aAHI;AAIJC,MAAAA,+BAJI;AAKJC,MAAAA,KAAK,EAAEC,GALH;AAMJC,MAAAA,OAAO,EAAE;AAAEC,QAAAA,WAAF;AAAeC,QAAAA;AAAf,OANL;AAOJC,MAAAA,UAPI;AAQJC,MAAAA,MAAM,EAAEC,IARJ;AASJC,MAAAA,gBATI;AAUJC,MAAAA;AAVI,QAWFf,KAXJ;AAYA,UAAM;AACJgB,MAAAA,KAAK,EAAE;AAAEC,QAAAA,iBAAF;AAAqBC,QAAAA,eAArB;AAAsCC,QAAAA;AAAtC,OADH;AAEJC,MAAAA,cAFI;AAGJC,MAAAA;AAHI,QAIFpB,OAJJ;AAMA,UAAMqB,KAAK,GAAGH,oBAAoB,IAAID,eAAtC;;AACA,QACE,CAACD,iBAAD,IACA,CAACK,KADD,IAEAA,KAAK,CAACC,IAAN,KAAe,OAFf,IAGA,CAACD,KAAK,CAACE,SAHP,IAIA,CAACF,KAAK,CAACG,YAJP,IAKCZ,IAAI,CAACS,KAAD,EAAQ,KAAR,CAAJ,IAAsBT,IAAI,CAACS,KAAD,EAAQ,MAAR,CAN7B,EAOE;AACA,aAAOvB,MAAP;AACD;;AACD,QACEmB,eAAe,CAACK,IAAhB,KAAyB,WAAzB,KACCL,eAAe,CAACQ,YAAhB,KAAiCJ,KAAK,CAACK,MAAvC,IACCT,eAAe,CAACU,UAFlB,CADF,EAIE;AACA,aAAO7B,MAAP;AACD;;AACD,UAAM8B,iBAAiB,GACrBP,KAAK,CAACQ,IAAN,CAAWD,iBAAX,IAAgCjC,mBADlC;AAEA,UAAMmC,cAAc,GAAGF,iBAAiB,KAAK,MAA7C;;AACA,QAAI,CAACE,cAAD,IAAmB,CAAClC,kBAAxB,EAA4C;AAC1C,aAAOE,MAAP;AACD;;AAED,UAAMiC,SAAS,GAAG3B,+BAA+B,CAACiB,KAAK,CAACW,IAAN,CAAWC,EAAZ,EAAgB,IAAhB,CAAjD;AACA,UAAMC,aAAa,GAAGH,SAAS,CAACI,IAAhC;AACA,UAAMC,gBAAgB,GAAGjC,aAAa,CACpCO,UAAU,CAAC2B,WAAX,CAAuBH,aAAvB,CADoC,CAAtC;AAGA,UAAMI,aAAa,GAAGnC,aAAa,CAACO,UAAU,CAAC6B,IAAX,CAAgBL,aAAhB,CAAD,CAAnC;;AACA,QAAI,CAACI,aAAL,EAAoB;AAClB,aAAOxC,MAAP;AACD;;AAED,UAAM0C,oBAAoB,GAAGnB,KAAK,CAACmB,oBAAnC;AACA,UAAMC,WAAW,GACfD,oBAAoB,IAAIA,oBAAoB,CAACE,aAD/C;AAEA,UAAMC,UAAU,GAAG,CAAC/B,IAAI,CAACS,KAAD,EAAQ,OAAR,CAAxB;AAEA,UAAMuB,SAAS,GAAGlC,UAAU,CAACmC,SAAX,CAAqBxB,KAArB,CAAlB;AACA,UAAMyB,gBAAgB,GACpBH,UAAU,KACTP,gBAAgB,CAACW,SAAjB,GAA6BC,IAA7B,CAAkCC,CAAC,IAAIA,CAAC,CAACd,IAAF,KAAW,iBAAlD,KACCC,gBAAgB,CAACW,SAAjB,GAA6B,CAA7B,CAFQ,CADZ;AAIA,WAAO9C,MAAM,CACXH,MADW,EAEX;AACE,OAAC8C,SAAD,GAAa9B,OAAO,CAClBf,KADkB,EAElBoB,cAFkB,EAGlByB,SAHkB,EAIlB;AACEM,QAAAA,WAAW,EAAEnD,KAAK,CAACoD,eAAN,CACV,qBAAoBjB,aAAc,6BADxB,EAEX,OAFW,CADf;AAKEF,QAAAA,IAAI,EAAEM,aALR;AAMEc,QAAAA,IAAI,EAAET,UAAU,GACZ;AACEU,UAAAA,OAAO,EAAE;AACPH,YAAAA,WAAW,EAAEnD,KAAK,CAACoD,eAAN,CACV,qCAAoCjB,aAAc,KADxC,EAEX,KAFW,CADN;AAKPF,YAAAA,IAAI,EAAE,IAAIxB,WAAJ,CACJ,IAAIC,cAAJ,CAAmB2B,gBAAnB,CADI,CALC;AAQPkB,YAAAA,YAAY,EAAER,gBAAgB,GAC1B,CAACA,gBAAgB,CAACS,KAAlB,CAD0B,GAE1B;AAVG;AADX,SADY,GAeZ,EArBN;;AAsBEC,QAAAA,OAAO,CAACC,IAAD,EAAO;AAAEJ,UAAAA,OAAO,EAAEK;AAAX,SAAP,EAAgCC,QAAhC,EAA0CC,WAA1C,EAAuD;AAC5D,cAAI,CAACH,IAAI,CAACA,IAAV,EAAgB;AACd,mBAAO,IAAP;AACD;;AACD,gBAAMI,SAAS,GAAG3D,2BAA2B,CAAC0D,WAAD,CAA7C;AACA,gBAAMrB,IAAI,GAAGkB,IAAI,CAACA,IAAL,CAAUI,SAAV,CAAb;;AACA,cAAI,CAACtB,IAAL,EAAW;AACT,mBAAO,IAAP;AACD;;AACD,gBAAMc,OAAO,GACXV,UAAU,IAAIe,UAAd,GACII,KAAK,CAACC,OAAN,CAAcL,UAAd,IACEA,UADF,GAEE,CAACA,UAAD,CAHN,GAII,IALN;AAMA,gBAAMM,KAAK,GACTX,OAAO,IAAIA,OAAO,CAACY,IAAR,CAAaC,IAAI,IAAIA,IAAI,CAACC,KAA1B,CAAX,GACId,OAAO,CAACe,MAAR,CAAeF,IAAI,IAAIA,IAAI,CAACC,KAA5B,CADJ,GAEI,IAHN;;AAKA,cAAI,CAACH,KAAL,EAAY;AACV,gBAAIzB,IAAI,CAAC8B,aAAT,EAAwB;AACtB,qBAAO,EACL,GAAG9B,IADE;AAEL+B,gBAAAA,QAAQ,EAAE,CAAC,iBAAD,EAAoB/B,IAAI,CAAC8B,aAAzB;AAFL,eAAP;AAID,aALD,MAKO;AACL,qBAAO9B,IAAP;AACD;AACF;;AAED,iBAAO,EACL,GAAGA,IADE;AAEL+B,YAAAA,QAAQ,EACN/B,IAAI,CAAE,WAAUyB,KAAK,CAACO,GAAN,CAAUL,IAAI,IAAIA,IAAI,CAACC,KAAvB,EAA8BK,IAA9B,CAAmC,IAAnC,CAAyC,EAArD;AAHD,WAAP;AAKD;;AA1DH,OAJkB,EAgElB;AACEC,QAAAA,4BAA4B,EAAE,IADhC;AAEEC,QAAAA,oBAAoB,EAAErD;AAFxB,OAhEkB,EAoElB,KApEkB,EAqElB;AACEsD,QAAAA,gBAAgB,CAACC,YAAD,EAAe;AAAEC,UAAAA;AAAF,SAAf,EAA8C;AAC5D,gBAAM;AACJzB,YAAAA,IAAI,EAAE;AAAEC,cAAAA,OAAO,EAAEK;AAAX;AADF,cAEFmB,yBAFJ;AAGA,gBAAMxB,OAAO,GACXV,UAAU,IAAIe,UAAd,GACII,KAAK,CAACC,OAAN,CAAcL,UAAd,IACEA,UADF,GAEE,CAACA,UAAD,CAHN,GAII,IALN;;AAMA,cAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,kBAAMyB,OAAO,GAAG,EAAhB;AACA,kBAAMC,WAAW,GAAG,EAApB;AACA,gBAAIC,MAAM,GAAG,KAAb;AACA3B,YAAAA,OAAO,CAAC4B,OAAR,CAAgBf,IAAI,IAAI;AACtB,oBAAM;AAAEC,gBAAAA,KAAF;AAASe,gBAAAA,KAAT;AAAgBF,gBAAAA,MAAM,EAAEG;AAAxB,kBAAyCjB,IAA/C;AACAc,cAAAA,MAAM,GAAGA,MAAM,IAAIG,YAAnB;AACA,oBAAMC,MAAM,GAAGtB,KAAK,CAACC,OAAN,CAAcmB,KAAK,CAAC,CAAD,CAAnB,IAA0BA,KAA1B,GAAkC,CAACA,KAAD,CAAjD;AACAE,cAAAA,MAAM,CAACH,OAAP,CAAe,CAAC,CAACI,GAAD,EAAMC,UAAN,CAAD,KAAuB;AACpC,oBAAI,CAACD,GAAL,EAAU;AACR;AACD;;AACD,sBAAME,IAAI,GAAG,uBAASF,GAAT,IACT/E,GAAG,CAACkF,QAAS,GAAEZ,YAAY,CAACa,aAAb,EAA6B,IAAGnF,GAAG,CAACoF,UAAJ,CAC7CL,GAD6C,CAE7C,EAHO,GAIT,OAAOA,GAAP,KAAe,UAAf,GACAA,GAAG,CAAC;AAAET,kBAAAA;AAAF,iBAAD,CADH,GAEAS,GANJ;AAOAN,gBAAAA,WAAW,CAACY,IAAZ,CAAiBJ,IAAjB;AACD,eAZD;AAaA,kBAAIpB,KAAK,IAAI,IAAb,EAAmB;AACnBW,cAAAA,OAAO,CAACa,IAAR,CAAaxB,KAAb;AACD,aAnBD;;AAoBA,gBAAI,CAACa,MAAD,IAAWvC,WAAf,EAA4B;AAC1B;AACAA,cAAAA,WAAW,CAACwC,OAAZ,CAAoBW,GAAG,IAAI;AACzBb,gBAAAA,WAAW,CAACY,IAAZ,CACErF,GAAG,CAACkF,QAAS,GAAEZ,YAAY,CAACa,aAAb,EAA6B,IAAGnF,GAAG,CAACoF,UAAJ,CAC7CE,GAAG,CAACzD,IADyC,CAE7C,EAHJ;AAKD,eAND;AAOD;;AACD,gBAAI2C,OAAO,CAACe,MAAZ,EAAoB;AAClBjB,cAAAA,YAAY,CAACkB,MAAb,CACExF,GAAG,CAACkF,QAAS,oBAAmBlF,GAAG,CAACkE,IAAJ,CAC9BM,OAAO,CAACP,GAAR,CAAYwB,CAAC,IAAIzF,GAAG,CAACkF,QAAS,GAAElF,GAAG,CAAC0F,OAAJ,CAAYD,CAAZ,CAAe,QAA/C,CAD8B,EAE9B,IAF8B,CAG9B,sBAAqBzF,GAAG,CAACkE,IAAJ,CAASO,WAAT,EAAsB,IAAtB,CAA4B,IAJrD,EAKE,aAAaD,OAAO,CAACN,IAAR,CAAa,IAAb,CALf;AAOD;AACF;AACF;;AAvDH,OArEkB;AADtB,KAFW,EAmIV,+BAA8B3D,gBAAgB,CAC7CQ,KAD6C,CAE7C,yBAAwBD,IAAI,CAACe,IAAK,GArIzB,CAAb;AAuID,GAzMH,EA0ME,CAAC,uBAAD,CA1MF;AA4MD,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport isString from \"lodash/isString\";\n\nexport default (function PgMutationPayloadEdgePlugin(\n builder,\n { pgSimpleCollections, disableIssue397Fix }\n) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n getSafeAliasFromResolveInfo,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n graphql: { GraphQLList, GraphQLNonNull },\n inflection,\n pgOmit: omit,\n describePgEntity,\n pgField,\n } = build;\n const {\n scope: { isMutationPayload, pgIntrospection, pgIntrospectionTable },\n fieldWithHooks,\n Self,\n } = context;\n\n const table = pgIntrospectionTable || pgIntrospection;\n if (\n !isMutationPayload ||\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n !table.isSelectable ||\n (omit(table, \"all\") && omit(table, \"many\"))\n ) {\n return fields;\n }\n if (\n pgIntrospection.kind === \"procedure\" &&\n (pgIntrospection.returnTypeId !== table.typeId ||\n pgIntrospection.returnsSet)\n ) {\n return fields;\n }\n const simpleCollections =\n table.tags.simpleCollections || pgSimpleCollections;\n const hasConnections = simpleCollections !== \"only\";\n if (!hasConnections && !disableIssue397Fix) {\n return fields;\n }\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const tableTypeName = TableType.name;\n const TableOrderByType = getTypeByName(\n inflection.orderByType(tableTypeName)\n );\n const TableEdgeType = getTypeByName(inflection.edge(tableTypeName));\n if (!TableEdgeType) {\n return fields;\n }\n\n const primaryKeyConstraint = table.primaryKeyConstraint;\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const canOrderBy = !omit(table, \"order\");\n\n const fieldName = inflection.edgeField(table);\n const defaultValueEnum =\n canOrderBy &&\n (TableOrderByType.getValues().find(v => v.name === \"PRIMARY_KEY_ASC\") ||\n TableOrderByType.getValues()[0]);\n return extend(\n fields,\n {\n [fieldName]: pgField(\n build,\n fieldWithHooks,\n fieldName,\n {\n description: build.wrapDescription(\n `An edge for our \\`${tableTypeName}\\`. May be used by Relay 1.`,\n \"field\"\n ),\n type: TableEdgeType,\n args: canOrderBy\n ? {\n orderBy: {\n description: build.wrapDescription(\n `The method to use when ordering \\`${tableTypeName}\\`.`,\n \"arg\"\n ),\n type: new GraphQLList(\n new GraphQLNonNull(TableOrderByType)\n ),\n defaultValue: defaultValueEnum\n ? [defaultValueEnum.value]\n : null,\n },\n }\n : {},\n resolve(data, { orderBy: rawOrderBy }, _context, resolveInfo) {\n if (!data.data) {\n return null;\n }\n const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);\n const edge = data.data[safeAlias];\n if (!edge) {\n return null;\n }\n const orderBy =\n canOrderBy && rawOrderBy\n ? Array.isArray(rawOrderBy)\n ? rawOrderBy\n : [rawOrderBy]\n : null;\n const order =\n orderBy && orderBy.some(item => item.alias)\n ? orderBy.filter(item => item.alias)\n : null;\n\n if (!order) {\n if (edge.__identifiers) {\n return {\n ...edge,\n __cursor: [\"primary_key_asc\", edge.__identifiers],\n };\n } else {\n return edge;\n }\n }\n\n return {\n ...edge,\n __cursor:\n edge[`__order_${order.map(item => item.alias).join(\"__\")}`],\n };\n },\n },\n {\n isPgMutationPayloadEdgeField: true,\n pgFieldIntrospection: table,\n },\n false,\n {\n withQueryBuilder(queryBuilder, { parsedResolveInfoFragment }) {\n const {\n args: { orderBy: rawOrderBy },\n } = parsedResolveInfoFragment;\n const orderBy =\n canOrderBy && rawOrderBy\n ? Array.isArray(rawOrderBy)\n ? rawOrderBy\n : [rawOrderBy]\n : null;\n if (orderBy != null) {\n const aliases = [];\n const expressions = [];\n let unique = false;\n orderBy.forEach(item => {\n const { alias, specs, unique: itemIsUnique } = item;\n unique = unique || itemIsUnique;\n const orders = Array.isArray(specs[0]) ? specs : [specs];\n orders.forEach(([col, _ascending]) => {\n if (!col) {\n return;\n }\n const expr = isString(col)\n ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n col\n )}`\n : typeof col === \"function\"\n ? col({ queryBuilder })\n : col;\n expressions.push(expr);\n });\n if (alias == null) return;\n aliases.push(alias);\n });\n if (!unique && primaryKeys) {\n // Add PKs\n primaryKeys.forEach(key => {\n expressions.push(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )}`\n );\n });\n }\n if (aliases.length) {\n queryBuilder.select(\n sql.fragment`json_build_array(${sql.join(\n aliases.map(a => sql.fragment`${sql.literal(a)}::text`),\n \", \"\n )}, json_build_array(${sql.join(expressions, \", \")}))`,\n \"__order_\" + aliases.join(\"__\")\n );\n }\n }\n },\n }\n ),\n },\n `Adding edge field for table ${describePgEntity(\n table\n )} to mutation payload '${Self.name}'`\n );\n },\n [\"PgMutationPayloadEdge\"]\n );\n}: Plugin);\n"],"file":"PgMutationPayloadEdgePlugin.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/PgMutationPayloadEdgePlugin.js"],"names":["PgMutationPayloadEdgePlugin","builder","pgSimpleCollections","disableIssue397Fix","hook","fields","build","context","extend","getSafeAliasFromResolveInfo","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgSql","sql","graphql","GraphQLList","GraphQLNonNull","inflection","pgOmit","omit","describePgEntity","pgField","scope","isMutationPayload","pgIntrospection","pgIntrospectionTable","fieldWithHooks","Self","table","kind","namespace","isSelectable","returnTypeId","typeId","returnsSet","simpleCollections","tags","hasConnections","TableType","type","id","tableTypeName","name","TableOrderByType","orderByType","TableEdgeType","edge","primaryKeyConstraint","primaryKeys","keyAttributes","canOrderBy","fieldName","edgeField","primaryKeyAsc","builtin","defaultValueEnum","getValues","find","v","description","wrapDescription","args","orderBy","defaultValue","value","resolve","data","rawOrderBy","_context","resolveInfo","safeAlias","Array","isArray","order","some","item","alias","filter","__identifiers","__cursor","map","join","isPgMutationPayloadEdgeField","pgFieldIntrospection","withQueryBuilder","queryBuilder","parsedResolveInfoFragment","aliases","expressions","unique","forEach","specs","itemIsUnique","orders","col","_ascending","expr","fragment","getTableAlias","identifier","push","key","length","select","a","literal"],"mappings":"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","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport isString from \"lodash/isString\";\n\nexport default (function PgMutationPayloadEdgePlugin(\n builder,\n { pgSimpleCollections, disableIssue397Fix }\n) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n getSafeAliasFromResolveInfo,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n graphql: { GraphQLList, GraphQLNonNull },\n inflection,\n pgOmit: omit,\n describePgEntity,\n pgField,\n } = build;\n const {\n scope: { isMutationPayload, pgIntrospection, pgIntrospectionTable },\n fieldWithHooks,\n Self,\n } = context;\n\n const table = pgIntrospectionTable || pgIntrospection;\n if (\n !isMutationPayload ||\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n !table.isSelectable ||\n (omit(table, \"all\") && omit(table, \"many\"))\n ) {\n return fields;\n }\n if (\n pgIntrospection.kind === \"procedure\" &&\n (pgIntrospection.returnTypeId !== table.typeId ||\n pgIntrospection.returnsSet)\n ) {\n return fields;\n }\n const simpleCollections =\n table.tags.simpleCollections || pgSimpleCollections;\n const hasConnections = simpleCollections !== \"only\";\n if (!hasConnections && !disableIssue397Fix) {\n return fields;\n }\n\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const tableTypeName = TableType.name;\n const TableOrderByType = getTypeByName(\n inflection.orderByType(tableTypeName)\n );\n const TableEdgeType = getTypeByName(inflection.edge(tableTypeName));\n if (!TableEdgeType) {\n return fields;\n }\n\n const primaryKeyConstraint = table.primaryKeyConstraint;\n const primaryKeys =\n primaryKeyConstraint && primaryKeyConstraint.keyAttributes;\n const canOrderBy = !omit(table, \"order\");\n\n const fieldName = inflection.edgeField(table);\n const primaryKeyAsc = inflection.builtin(\"PRIMARY_KEY_ASC\");\n const defaultValueEnum =\n canOrderBy &&\n (TableOrderByType.getValues().find(v => v.name === primaryKeyAsc) ||\n TableOrderByType.getValues()[0]);\n return extend(\n fields,\n {\n [fieldName]: pgField(\n build,\n fieldWithHooks,\n fieldName,\n {\n description: build.wrapDescription(\n `An edge for our \\`${tableTypeName}\\`. May be used by Relay 1.`,\n \"field\"\n ),\n type: TableEdgeType,\n args: canOrderBy\n ? {\n orderBy: {\n description: build.wrapDescription(\n `The method to use when ordering \\`${tableTypeName}\\`.`,\n \"arg\"\n ),\n type: new GraphQLList(\n new GraphQLNonNull(TableOrderByType)\n ),\n defaultValue: defaultValueEnum\n ? [defaultValueEnum.value]\n : null,\n },\n }\n : {},\n resolve(data, { orderBy: rawOrderBy }, _context, resolveInfo) {\n if (!data.data) {\n return null;\n }\n const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);\n const edge = data.data[safeAlias];\n if (!edge) {\n return null;\n }\n const orderBy =\n canOrderBy && rawOrderBy\n ? Array.isArray(rawOrderBy)\n ? rawOrderBy\n : [rawOrderBy]\n : null;\n const order =\n orderBy && orderBy.some(item => item.alias)\n ? orderBy.filter(item => item.alias)\n : null;\n\n if (!order) {\n if (edge.__identifiers) {\n return {\n ...edge,\n __cursor: [\"primary_key_asc\", edge.__identifiers],\n };\n } else {\n return edge;\n }\n }\n\n return {\n ...edge,\n __cursor:\n edge[`__order_${order.map(item => item.alias).join(\"__\")}`],\n };\n },\n },\n {\n isPgMutationPayloadEdgeField: true,\n pgFieldIntrospection: table,\n },\n false,\n {\n withQueryBuilder(queryBuilder, { parsedResolveInfoFragment }) {\n const {\n args: { orderBy: rawOrderBy },\n } = parsedResolveInfoFragment;\n const orderBy =\n canOrderBy && rawOrderBy\n ? Array.isArray(rawOrderBy)\n ? rawOrderBy\n : [rawOrderBy]\n : null;\n if (orderBy != null) {\n const aliases = [];\n const expressions = [];\n let unique = false;\n orderBy.forEach(item => {\n const { alias, specs, unique: itemIsUnique } = item;\n unique = unique || itemIsUnique;\n const orders = Array.isArray(specs[0]) ? specs : [specs];\n orders.forEach(([col, _ascending]) => {\n if (!col) {\n return;\n }\n const expr = isString(col)\n ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n col\n )}`\n : typeof col === \"function\"\n ? col({ queryBuilder })\n : col;\n expressions.push(expr);\n });\n if (alias == null) return;\n aliases.push(alias);\n });\n if (!unique && primaryKeys) {\n // Add PKs\n primaryKeys.forEach(key => {\n expressions.push(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )}`\n );\n });\n }\n if (aliases.length) {\n queryBuilder.select(\n sql.fragment`json_build_array(${sql.join(\n aliases.map(a => sql.fragment`${sql.literal(a)}::text`),\n \", \"\n )}, json_build_array(${sql.join(expressions, \", \")}))`,\n \"__order_\" + aliases.join(\"__\")\n );\n }\n }\n },\n }\n ),\n },\n `Adding edge field for table ${describePgEntity(\n table\n )} to mutation payload '${Self.name}'`\n );\n },\n [\"PgMutationPayloadEdge\"]\n );\n}: Plugin);\n"],"file":"PgMutationPayloadEdgePlugin.js"}
|
|
@@ -97,10 +97,10 @@ var PgMutationUpdateDeletePlugin = async function PgMutationUpdateDeletePlugin(b
|
|
|
97
97
|
if (fieldName in inputData
|
|
98
98
|
/* Because we care about null! */
|
|
99
99
|
) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
const val = inputData[fieldName];
|
|
101
|
+
sqlColumns.push(sql.identifier(attr.name));
|
|
102
|
+
sqlValues.push(gql2pg(val, attr.type, attr.typeModifier));
|
|
103
|
+
}
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
if (sqlColumns.length === 0) {
|
|
@@ -211,9 +211,8 @@ returning *`;
|
|
|
211
211
|
fields: ({ fieldWithHooks }) => {
|
|
212
212
|
const tableName = inflection.tableFieldName(table);
|
|
213
213
|
// This should really be `-node-id` but for compatibility with PostGraphQL v3 we haven't made that change.
|
|
214
|
-
const deletedNodeIdFieldName =
|
|
215
|
-
table
|
|
216
|
-
);
|
|
214
|
+
const deletedNodeIdFieldName =
|
|
215
|
+
inflection.deletedNodeId(table);
|
|
217
216
|
return Object.assign(
|
|
218
217
|
{
|
|
219
218
|
clientMutationId: {
|
|
@@ -243,9 +242,8 @@ returning *`;
|
|
|
243
242
|
[deletedNodeIdFieldName]: fieldWithHooks(
|
|
244
243
|
deletedNodeIdFieldName,
|
|
245
244
|
({ addDataGenerator }) => {
|
|
246
|
-
const fieldDataGeneratorsByTableType =
|
|
247
|
-
TableType
|
|
248
|
-
);
|
|
245
|
+
const fieldDataGeneratorsByTableType =
|
|
246
|
+
fieldDataGeneratorsByType.get(TableType);
|
|
249
247
|
|
|
250
248
|
const gens =
|
|
251
249
|
fieldDataGeneratorsByTableType &&
|
|
@@ -298,9 +296,10 @@ returning *`;
|
|
|
298
296
|
if (nodeIdFieldName && primaryKeyConstraint) {
|
|
299
297
|
const primaryKeys =
|
|
300
298
|
primaryKeyConstraint && primaryKeyConstraint.keyAttributes;
|
|
301
|
-
const fieldName =
|
|
302
|
-
mode === "update" ? "updateNode" : "deleteNode"
|
|
303
|
-
|
|
299
|
+
const fieldName =
|
|
300
|
+
inflection[mode === "update" ? "updateNode" : "deleteNode"](
|
|
301
|
+
table
|
|
302
|
+
);
|
|
304
303
|
const InputType = newWithHooks(
|
|
305
304
|
GraphQLInputObjectType,
|
|
306
305
|
{
|
|
@@ -370,9 +369,8 @@ returning *`;
|
|
|
370
369
|
[fieldName]: fieldWithHooks(
|
|
371
370
|
fieldName,
|
|
372
371
|
context => {
|
|
373
|
-
const {
|
|
374
|
-
|
|
375
|
-
} = context;
|
|
372
|
+
const { getDataFromParsedResolveInfoFragment } =
|
|
373
|
+
context;
|
|
376
374
|
return {
|
|
377
375
|
description: build.wrapDescription(
|
|
378
376
|
mode === "update"
|
|
@@ -396,10 +394,8 @@ returning *`;
|
|
|
396
394
|
const { pgClient } = resolveContext;
|
|
397
395
|
const nodeId = input[nodeIdFieldName];
|
|
398
396
|
try {
|
|
399
|
-
const {
|
|
400
|
-
|
|
401
|
-
identifiers,
|
|
402
|
-
} = getTypeAndIdentifiersFromNodeId(nodeId);
|
|
397
|
+
const { Type, identifiers } =
|
|
398
|
+
getTypeAndIdentifiersFromNodeId(nodeId);
|
|
403
399
|
if (Type !== TableType) {
|
|
404
400
|
throw new Error("Mismatched type");
|
|
405
401
|
}
|
|
@@ -539,9 +535,8 @@ returning *`;
|
|
|
539
535
|
[fieldName]: fieldWithHooks(
|
|
540
536
|
fieldName,
|
|
541
537
|
context => {
|
|
542
|
-
const {
|
|
543
|
-
|
|
544
|
-
} = context;
|
|
538
|
+
const { getDataFromParsedResolveInfoFragment } =
|
|
539
|
+
context;
|
|
545
540
|
return {
|
|
546
541
|
description: build.wrapDescription(
|
|
547
542
|
mode === "update"
|
|
@@ -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","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","wrapDescription","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: build.wrapDescription(\n `The output of our ${mode} \\`${tableTypeName}\\` mutation.`,\n \"type\"\n ),\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: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: build.wrapDescription(\n `The \\`${tableTypeName}\\` that was ${mode}d by this mutation.`,\n \"field\"\n ),\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: build.wrapDescription(\n `All input for the \\`${fieldName}\\` mutation.`,\n \"type\"\n ),\n name: inflection[\n mode === \"update\"\n ? \"updateNodeInputType\"\n : \"deleteNodeInputType\"\n ](table),\n fields: Object.assign(\n {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n [nodeIdFieldName]: {\n description: build.wrapDescription(\n `The globally unique \\`ID\\` which will identify a single \\`${tableTypeName}\\` to be ${mode}d.`,\n \"field\"\n ),\n type: new GraphQLNonNull(GraphQLID),\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: build.wrapDescription(\n `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n \"field\"\n ),\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: build.wrapDescription(\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 \"field\"\n ),\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: build.wrapDescription(\n `All input for the \\`${fieldName}\\` mutation.`,\n \"type\"\n ),\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: build.wrapDescription(\n `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n \"field\"\n ),\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: build.wrapDescription(\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 \"field\"\n ),\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","wrapDescription","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: build.wrapDescription(\n `The output of our ${mode} \\`${tableTypeName}\\` mutation.`,\n \"type\"\n ),\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 =\n inflection.deletedNodeId(table);\n return Object.assign(\n {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n [tableName]: pgField(\n build,\n fieldWithHooks,\n tableName,\n {\n description: build.wrapDescription(\n `The \\`${tableTypeName}\\` that was ${mode}d by this mutation.`,\n \"field\"\n ),\n type: Table,\n },\n {},\n false\n ),\n },\n mode === \"delete\"\n ? {\n [deletedNodeIdFieldName]: fieldWithHooks(\n deletedNodeIdFieldName,\n ({ addDataGenerator }) => {\n const fieldDataGeneratorsByTableType =\n fieldDataGeneratorsByType.get(TableType);\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 =\n inflection[mode === \"update\" ? \"updateNode\" : \"deleteNode\"](\n table\n );\n const InputType = newWithHooks(\n GraphQLInputObjectType,\n {\n description: build.wrapDescription(\n `All input for the \\`${fieldName}\\` mutation.`,\n \"type\"\n ),\n name: inflection[\n mode === \"update\"\n ? \"updateNodeInputType\"\n : \"deleteNodeInputType\"\n ](table),\n fields: Object.assign(\n {\n clientMutationId: {\n description: build.wrapDescription(\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 \"field\"\n ),\n type: GraphQLString,\n },\n [nodeIdFieldName]: {\n description: build.wrapDescription(\n `The globally unique \\`ID\\` which will identify a single \\`${tableTypeName}\\` to be ${mode}d.`,\n \"field\"\n ),\n type: new GraphQLNonNull(GraphQLID),\n },\n },\n mode === \"update\"\n ? {\n [inflection.patchField(\n inflection.tableFieldName(table)\n )]: {\n description: build.wrapDescription(\n `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n \"field\"\n ),\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 { getDataFromParsedResolveInfoFragment } =\n context;\n return {\n description: build.wrapDescription(\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 \"field\"\n ),\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 { Type, 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: build.wrapDescription(\n `All input for the \\`${fieldName}\\` mutation.`,\n \"type\"\n ),\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: build.wrapDescription(\n `An object where the defined keys will be set on the \\`${tableTypeName}\\` being ${mode}d.`,\n \"field\"\n ),\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 { getDataFromParsedResolveInfoFragment } =\n context;\n return {\n description: build.wrapDescription(\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 \"field\"\n ),\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"}
|
|
@@ -8,7 +8,8 @@ exports.default = void 0;
|
|
|
8
8
|
var PgOrderByPrimaryKeyPlugin = function PgOrderByPrimaryKeyPlugin(builder) {
|
|
9
9
|
builder.hook("GraphQLEnumType:values", (values, build, context) => {
|
|
10
10
|
const {
|
|
11
|
-
extend
|
|
11
|
+
extend,
|
|
12
|
+
inflection
|
|
12
13
|
} = build;
|
|
13
14
|
const {
|
|
14
15
|
scope: {
|
|
@@ -29,14 +30,14 @@ var PgOrderByPrimaryKeyPlugin = function PgOrderByPrimaryKeyPlugin(builder) {
|
|
|
29
30
|
|
|
30
31
|
const primaryKeys = primaryKeyConstraint.keyAttributes;
|
|
31
32
|
return extend(values, {
|
|
32
|
-
PRIMARY_KEY_ASC: {
|
|
33
|
+
[inflection.builtin("PRIMARY_KEY_ASC")]: {
|
|
33
34
|
value: {
|
|
34
35
|
alias: "primary_key_asc",
|
|
35
36
|
specs: primaryKeys.map(key => [key.name, true]),
|
|
36
37
|
unique: true
|
|
37
38
|
}
|
|
38
39
|
},
|
|
39
|
-
PRIMARY_KEY_DESC: {
|
|
40
|
+
[inflection.builtin("PRIMARY_KEY_DESC")]: {
|
|
40
41
|
value: {
|
|
41
42
|
alias: "primary_key_desc",
|
|
42
43
|
specs: primaryKeys.map(key => [key.name, false]),
|
|
@@ -5,7 +5,7 @@ export default (function PgOrderByPrimaryKeyPlugin(builder) {
|
|
|
5
5
|
builder.hook(
|
|
6
6
|
"GraphQLEnumType:values",
|
|
7
7
|
(values, build, context) => {
|
|
8
|
-
const { extend } = build;
|
|
8
|
+
const { extend, inflection } = build;
|
|
9
9
|
const {
|
|
10
10
|
scope: { isPgRowSortEnum, pgIntrospection: table },
|
|
11
11
|
} = context;
|
|
@@ -22,14 +22,14 @@ export default (function PgOrderByPrimaryKeyPlugin(builder) {
|
|
|
22
22
|
return extend(
|
|
23
23
|
values,
|
|
24
24
|
{
|
|
25
|
-
PRIMARY_KEY_ASC: {
|
|
25
|
+
[inflection.builtin("PRIMARY_KEY_ASC")]: {
|
|
26
26
|
value: {
|
|
27
27
|
alias: "primary_key_asc",
|
|
28
28
|
specs: primaryKeys.map(key => [key.name, true]),
|
|
29
29
|
unique: true,
|
|
30
30
|
},
|
|
31
31
|
},
|
|
32
|
-
PRIMARY_KEY_DESC: {
|
|
32
|
+
[inflection.builtin("PRIMARY_KEY_DESC")]: {
|
|
33
33
|
value: {
|
|
34
34
|
alias: "primary_key_desc",
|
|
35
35
|
specs: primaryKeys.map(key => [key.name, false]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgOrderByPrimaryKeyPlugin.js"],"names":["PgOrderByPrimaryKeyPlugin","builder","hook","values","build","context","extend","scope","isPgRowSortEnum","pgIntrospection","table","kind","primaryKeyConstraint","primaryKeys","keyAttributes","
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/PgOrderByPrimaryKeyPlugin.js"],"names":["PgOrderByPrimaryKeyPlugin","builder","hook","values","build","context","extend","inflection","scope","isPgRowSortEnum","pgIntrospection","table","kind","primaryKeyConstraint","primaryKeys","keyAttributes","builtin","value","alias","specs","map","key","name","unique"],"mappings":";;;;;;;IAGyBA,yB,GAAT,SAASA,yBAAT,CAAmCC,OAAnC,EAA4C;AAC1DA,EAAAA,OAAO,CAACC,IAAR,CACE,wBADF,EAEE,CAACC,MAAD,EAASC,KAAT,EAAgBC,OAAhB,KAA4B;AAC1B,UAAM;AAAEC,MAAAA,MAAF;AAAUC,MAAAA;AAAV,QAAyBH,KAA/B;AACA,UAAM;AACJI,MAAAA,KAAK,EAAE;AAAEC,QAAAA,eAAF;AAAmBC,QAAAA,eAAe,EAAEC;AAApC;AADH,QAEFN,OAFJ;;AAIA,QAAI,CAACI,eAAD,IAAoB,CAACE,KAArB,IAA8BA,KAAK,CAACC,IAAN,KAAe,OAAjD,EAA0D;AACxD,aAAOT,MAAP;AACD;;AACD,UAAMU,oBAAoB,GAAGF,KAAK,CAACE,oBAAnC;;AACA,QAAI,CAACA,oBAAL,EAA2B;AACzB,aAAOV,MAAP;AACD;;AACD,UAAMW,WAAW,GAAGD,oBAAoB,CAACE,aAAzC;AAEA,WAAOT,MAAM,CACXH,MADW,EAEX;AACE,OAACI,UAAU,CAACS,OAAX,CAAmB,iBAAnB,CAAD,GAAyC;AACvCC,QAAAA,KAAK,EAAE;AACLC,UAAAA,KAAK,EAAE,iBADF;AAELC,UAAAA,KAAK,EAAEL,WAAW,CAACM,GAAZ,CAAgBC,GAAG,IAAI,CAACA,GAAG,CAACC,IAAL,EAAW,IAAX,CAAvB,CAFF;AAGLC,UAAAA,MAAM,EAAE;AAHH;AADgC,OAD3C;AAQE,OAAChB,UAAU,CAACS,OAAX,CAAmB,kBAAnB,CAAD,GAA0C;AACxCC,QAAAA,KAAK,EAAE;AACLC,UAAAA,KAAK,EAAE,kBADF;AAELC,UAAAA,KAAK,EAAEL,WAAW,CAACM,GAAZ,CAAgBC,GAAG,IAAI,CAACA,GAAG,CAACC,IAAL,EAAW,KAAX,CAAvB,CAFF;AAGLC,UAAAA,MAAM,EAAE;AAHH;AADiC;AAR5C,KAFW,EAkBV,8CAA6CZ,KAAK,CAACW,IAAK,GAlB9C,CAAb;AAoBD,GArCH,EAsCE,CAAC,qBAAD,CAtCF;AAwCD,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgOrderByPrimaryKeyPlugin(builder) {\n builder.hook(\n \"GraphQLEnumType:values\",\n (values, build, context) => {\n const { extend, inflection } = build;\n const {\n scope: { isPgRowSortEnum, pgIntrospection: table },\n } = context;\n\n if (!isPgRowSortEnum || !table || table.kind !== \"class\") {\n return values;\n }\n const primaryKeyConstraint = table.primaryKeyConstraint;\n if (!primaryKeyConstraint) {\n return values;\n }\n const primaryKeys = primaryKeyConstraint.keyAttributes;\n\n return extend(\n values,\n {\n [inflection.builtin(\"PRIMARY_KEY_ASC\")]: {\n value: {\n alias: \"primary_key_asc\",\n specs: primaryKeys.map(key => [key.name, true]),\n unique: true,\n },\n },\n [inflection.builtin(\"PRIMARY_KEY_DESC\")]: {\n value: {\n alias: \"primary_key_desc\",\n specs: primaryKeys.map(key => [key.name, false]),\n unique: true,\n },\n },\n },\n `Adding primary key asc/desc sort to table '${table.name}'`\n );\n },\n [\"PgOrderByPrimaryKey\"]\n );\n}: Plugin);\n"],"file":"PgOrderByPrimaryKeyPlugin.js"}
|
|
@@ -21,8 +21,8 @@ export default (function PgOrderComputedColumnsPlugin(builder) {
|
|
|
21
21
|
return values;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
const compatibleComputedColumns =
|
|
25
|
-
(memo, proc) => {
|
|
24
|
+
const compatibleComputedColumns =
|
|
25
|
+
introspectionResultsByKind.procedure.reduce((memo, proc) => {
|
|
26
26
|
/* ALSO SEE PgConditionComputedColumnPlugin */
|
|
27
27
|
// Must be marked @sortable
|
|
28
28
|
if (!proc.tags.sortable) return memo;
|
|
@@ -62,9 +62,7 @@ export default (function PgOrderComputedColumnsPlugin(builder) {
|
|
|
62
62
|
// Looks good
|
|
63
63
|
memo.push({ proc, pseudoColumnName });
|
|
64
64
|
return memo;
|
|
65
|
-
},
|
|
66
|
-
[]
|
|
67
|
-
);
|
|
65
|
+
}, []);
|
|
68
66
|
return extend(
|
|
69
67
|
values,
|
|
70
68
|
compatibleComputedColumns.reduce((memo, { proc, pseudoColumnName }) => {
|