graphile-build-pg 4.13.0 → 4.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -13
- package/node8plus/GraphQLJSON.js +0 -11
- package/node8plus/GraphQLJSON.js.map +1 -1
- package/node8plus/PgLiveProvider.js +4 -11
- package/node8plus/PgLiveProvider.js.map +1 -1
- package/node8plus/QueryBuilder.js +42 -176
- package/node8plus/QueryBuilder.js.map +1 -1
- package/node8plus/index.js +8 -47
- package/node8plus/index.js.map +1 -1
- package/node8plus/inflections.js +9 -61
- package/node8plus/inflections.js.map +1 -1
- package/node8plus/omit.js +7 -22
- package/node8plus/omit.js.map +1 -1
- package/node8plus/parseIdentifier.js +0 -1
- package/node8plus/parseIdentifier.js.map +1 -1
- package/node8plus/pgPrepareAndRun.js +2 -14
- package/node8plus/pgPrepareAndRun.js.map +1 -1
- package/node8plus/plugins/PageInfoStartEndCursor.js +0 -4
- package/node8plus/plugins/PageInfoStartEndCursor.js.map +1 -1
- package/node8plus/plugins/PgAllRows.js +0 -29
- package/node8plus/plugins/PgAllRows.js.map +1 -1
- package/node8plus/plugins/PgBackwardRelationPlugin.js +2 -41
- package/node8plus/plugins/PgBackwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgBasicsPlugin.js +20 -147
- package/node8plus/plugins/PgBasicsPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnDeprecationPlugin.js +2 -5
- package/node8plus/plugins/PgColumnDeprecationPlugin.js.map +1 -1
- package/node8plus/plugins/PgColumnsPlugin.js +4 -17
- package/node8plus/plugins/PgColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgComputedColumnsPlugin.js +4 -19
- package/node8plus/plugins/PgComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgConditionComputedColumnPlugin.js +12 -23
- package/node8plus/plugins/PgConditionComputedColumnPlugin.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgCondition.js +1 -9
- package/node8plus/plugins/PgConnectionArgCondition.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js +0 -12
- package/node8plus/plugins/PgConnectionArgFirstLastBeforeAfter.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderBy.js +2 -19
- package/node8plus/plugins/PgConnectionArgOrderBy.js.map +1 -1
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js +0 -6
- package/node8plus/plugins/PgConnectionArgOrderByDefaultValue.js.map +1 -1
- package/node8plus/plugins/PgConnectionTotalCount.js +0 -8
- package/node8plus/plugins/PgConnectionTotalCount.js.map +1 -1
- package/node8plus/plugins/PgForwardRelationPlugin.js +2 -25
- package/node8plus/plugins/PgForwardRelationPlugin.js.map +1 -1
- package/node8plus/plugins/PgIntrospectionPlugin.js +91 -180
- package/node8plus/plugins/PgIntrospectionPlugin.js.flow +30 -2
- package/node8plus/plugins/PgIntrospectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgJWTPlugin.js +2 -18
- package/node8plus/plugins/PgJWTPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationCreatePlugin.js +0 -18
- package/node8plus/plugins/PgMutationCreatePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js +4 -25
- package/node8plus/plugins/PgMutationPayloadEdgePlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationProceduresPlugin.js +0 -6
- package/node8plus/plugins/PgMutationProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js +14 -49
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.flow +5 -2
- package/node8plus/plugins/PgMutationUpdateDeletePlugin.js.map +1 -1
- package/node8plus/plugins/PgNodeAliasPostGraphile.js +0 -6
- package/node8plus/plugins/PgNodeAliasPostGraphile.js.map +1 -1
- package/node8plus/plugins/PgOrderAllColumnsPlugin.js +0 -4
- package/node8plus/plugins/PgOrderAllColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js +0 -6
- package/node8plus/plugins/PgOrderByPrimaryKeyPlugin.js.map +1 -1
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js +10 -14
- package/node8plus/plugins/PgOrderComputedColumnsPlugin.js.map +1 -1
- package/node8plus/plugins/PgQueryProceduresPlugin.js +4 -16
- package/node8plus/plugins/PgQueryProceduresPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js +3 -20
- package/node8plus/plugins/PgRecordFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js +11 -16
- package/node8plus/plugins/PgRecordReturnTypesPlugin.js.map +1 -1
- package/node8plus/plugins/PgRowByUniqueConstraint.js +4 -25
- package/node8plus/plugins/PgRowByUniqueConstraint.js.map +1 -1
- package/node8plus/plugins/PgRowNode.js +0 -32
- package/node8plus/plugins/PgRowNode.js.map +1 -1
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js +3 -17
- package/node8plus/plugins/PgScalarFunctionConnectionPlugin.js.map +1 -1
- package/node8plus/plugins/PgTablesPlugin.js +7 -59
- package/node8plus/plugins/PgTablesPlugin.js.map +1 -1
- package/node8plus/plugins/PgTypesPlugin.js +140 -240
- package/node8plus/plugins/PgTypesPlugin.js.flow +76 -23
- package/node8plus/plugins/PgTypesPlugin.js.map +1 -1
- package/node8plus/plugins/addStartEndCursor.js +2 -5
- package/node8plus/plugins/addStartEndCursor.js.map +1 -1
- package/node8plus/plugins/debugSql.js +1 -16
- package/node8plus/plugins/debugSql.js.map +1 -1
- package/node8plus/plugins/introspectionQuery.js +3 -4
- package/node8plus/plugins/introspectionQuery.js.flow +11 -3
- package/node8plus/plugins/introspectionQuery.js.map +1 -1
- package/node8plus/plugins/makeProcField.js +40 -90
- package/node8plus/plugins/makeProcField.js.map +1 -1
- package/node8plus/plugins/pgField.js +2 -7
- package/node8plus/plugins/pgField.js.map +1 -1
- package/node8plus/plugins/viaTemporaryTable.js +6 -12
- package/node8plus/plugins/viaTemporaryTable.js.map +1 -1
- package/node8plus/postgresInterval.js +4 -4
- package/node8plus/postgresInterval.js.map +1 -1
- package/node8plus/queryFromResolveDataFactory.js +33 -77
- package/node8plus/queryFromResolveDataFactory.js.map +1 -1
- package/node8plus/utils.js +8 -9
- package/node8plus/utils.js.map +1 -1
- package/node8plus/withPgClient.js +4 -26
- package/node8plus/withPgClient.js.map +1 -1
- package/package.json +4 -4
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _isString = _interopRequireDefault(require("lodash/isString"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
var PgConnectionArgOrderBy = function PgConnectionArgOrderBy(builder, {
|
|
13
10
|
orderByNullsLast
|
|
14
11
|
}) {
|
|
@@ -30,7 +27,6 @@ var PgConnectionArgOrderBy = function PgConnectionArgOrderBy(builder, {
|
|
|
30
27
|
if (!table.namespace) return;
|
|
31
28
|
const tableTypeName = inflection.tableType(table);
|
|
32
29
|
/* const TableOrderByType = */
|
|
33
|
-
|
|
34
30
|
newWithHooks(GraphQLEnumType, {
|
|
35
31
|
name: inflection.orderByType(tableTypeName),
|
|
36
32
|
description: build.wrapDescription(`Methods to use when ordering \`${tableTypeName}\`.`, "type"),
|
|
@@ -76,48 +72,37 @@ var PgConnectionArgOrderBy = function PgConnectionArgOrderBy(builder, {
|
|
|
76
72
|
addArgDataGenerator,
|
|
77
73
|
Self
|
|
78
74
|
} = context;
|
|
79
|
-
|
|
80
75
|
if (!isPgFieldConnection && !isPgFieldSimpleCollection) {
|
|
81
76
|
return args;
|
|
82
77
|
}
|
|
83
|
-
|
|
84
78
|
const proc = pgFieldIntrospection.kind === "procedure" ? pgFieldIntrospection : null;
|
|
85
79
|
const table = pgFieldIntrospection.kind === "class" ? pgFieldIntrospection : proc ? pgFieldIntrospectionTable : null;
|
|
86
|
-
|
|
87
80
|
if (!table || !table.namespace || !table.isSelectable || omit(table, "order")) {
|
|
88
81
|
return args;
|
|
89
82
|
}
|
|
90
|
-
|
|
91
83
|
if (proc) {
|
|
92
84
|
if (!proc.tags.sortable) {
|
|
93
85
|
return args;
|
|
94
86
|
}
|
|
95
87
|
}
|
|
96
|
-
|
|
97
88
|
const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);
|
|
98
89
|
const tableTypeName = TableType.name;
|
|
99
90
|
const TableOrderByType = getTypeByName(inflection.orderByType(tableTypeName));
|
|
100
|
-
|
|
101
91
|
const cursorPrefixFromOrderBy = orderBy => {
|
|
102
92
|
if (orderBy) {
|
|
103
93
|
const cursorPrefixes = [];
|
|
104
|
-
|
|
105
94
|
for (let itemIndex = 0, itemCount = orderBy.length; itemIndex < itemCount; itemIndex++) {
|
|
106
95
|
const item = orderBy[itemIndex];
|
|
107
|
-
|
|
108
96
|
if (item.alias) {
|
|
109
97
|
cursorPrefixes.push(sql.literal(item.alias));
|
|
110
98
|
}
|
|
111
99
|
}
|
|
112
|
-
|
|
113
100
|
if (cursorPrefixes.length > 0) {
|
|
114
101
|
return cursorPrefixes;
|
|
115
102
|
}
|
|
116
103
|
}
|
|
117
|
-
|
|
118
104
|
return null;
|
|
119
105
|
};
|
|
120
|
-
|
|
121
106
|
addArgDataGenerator(function connectionOrderBy({
|
|
122
107
|
orderBy: rawOrderBy
|
|
123
108
|
}) {
|
|
@@ -133,13 +118,12 @@ var PgConnectionArgOrderBy = function PgConnectionArgOrderBy(builder, {
|
|
|
133
118
|
} = item;
|
|
134
119
|
const orders = Array.isArray(specs[0]) || specs.length === 0 ? specs : [specs];
|
|
135
120
|
orders.forEach(([col, ascending, specNullsFirst]) => {
|
|
136
|
-
const expr = (0, _isString.default)(col) ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(col)}` : col;
|
|
121
|
+
const expr = (0, _isString.default)(col) ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(col)}` : col;
|
|
122
|
+
// If the enum specifies null ordering, use that
|
|
137
123
|
// Otherwise, use the orderByNullsLast option if present
|
|
138
|
-
|
|
139
124
|
const nullsFirst = specNullsFirst != null ? specNullsFirst : orderByNullsLast != null ? !orderByNullsLast : undefined;
|
|
140
125
|
queryBuilder.orderBy(expr, ascending, nullsFirst);
|
|
141
126
|
});
|
|
142
|
-
|
|
143
127
|
if (unique) {
|
|
144
128
|
queryBuilder.setOrderIsUnique();
|
|
145
129
|
}
|
|
@@ -156,6 +140,5 @@ var PgConnectionArgOrderBy = function PgConnectionArgOrderBy(builder, {
|
|
|
156
140
|
}, `Adding 'orderBy' argument to field '${fieldName}' of '${Self.name}'`);
|
|
157
141
|
}, ["PgConnectionArgOrderBy"]);
|
|
158
142
|
};
|
|
159
|
-
|
|
160
143
|
exports.default = PgConnectionArgOrderBy;
|
|
161
144
|
//# sourceMappingURL=PgConnectionArgOrderBy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgConnectionArgOrderBy.js"],"names":["PgConnectionArgOrderBy","builder","orderByNullsLast","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","graphql","GraphQLEnumType","inflection","pgOmit","omit","sqlCommentByAddingTags","describePgEntity","class","forEach","table","isSelectable","namespace","tableTypeName","tableType","name","orderByType","description","wrapDescription","values","builtin","value","alias","specs","__origin","pgIntrospection","isPgRowSortEnum","args","context","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgSql","sql","GraphQLList","GraphQLNonNull","scope","fieldName","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospection","pgFieldIntrospectionTable","addArgDataGenerator","Self","proc","kind","tags","sortable","TableType","type","id","TableOrderByType","cursorPrefixFromOrderBy","orderBy","cursorPrefixes","itemIndex","itemCount","length","item","push","literal","connectionOrderBy","rawOrderBy","Array","isArray","pgCursorPrefix","pgQuery","queryBuilder","unique","orders","col","ascending","specNullsFirst","expr","fragment","getTableAlias","identifier","nullsFirst","undefined","setOrderIsUnique"],"mappings":"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","sourcesContent":["// @flow\nimport isString from \"lodash/isString\";\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgConnectionArgOrderBy(builder, { orderByNullsLast }) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n graphql: { GraphQLEnumType },\n inflection,\n pgOmit: omit,\n sqlCommentByAddingTags,\n describePgEntity,\n } = build;\n introspectionResultsByKind.class.forEach(table => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.isSelectable || omit(table, \"order\")) return;\n if (!table.namespace) return;\n\n const tableTypeName = inflection.tableType(table);\n /* const TableOrderByType = */\n newWithHooks(\n GraphQLEnumType,\n {\n name: inflection.orderByType(tableTypeName),\n description: build.wrapDescription(\n `Methods to use when ordering \\`${tableTypeName}\\`.`,\n \"type\"\n ),\n values: {\n [inflection.builtin(\"NATURAL\")]: {\n value: {\n alias: null,\n specs: [],\n },\n },\n },\n },\n {\n __origin: `Adding connection \"orderBy\" argument 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 pgIntrospection: table,\n isPgRowSortEnum: true,\n }\n );\n });\n return _;\n },\n [\"PgConnectionArgOrderBy\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n graphql: { GraphQLList, GraphQLNonNull },\n inflection,\n pgOmit: omit,\n } = build;\n const {\n scope: {\n fieldName,\n isPgFieldConnection,\n isPgFieldSimpleCollection,\n pgFieldIntrospection,\n pgFieldIntrospectionTable,\n },\n addArgDataGenerator,\n Self,\n } = context;\n\n if (!isPgFieldConnection && !isPgFieldSimpleCollection) {\n return args;\n }\n\n const proc =\n pgFieldIntrospection.kind === \"procedure\" ? pgFieldIntrospection : null;\n const table =\n pgFieldIntrospection.kind === \"class\"\n ? pgFieldIntrospection\n : proc\n ? pgFieldIntrospectionTable\n : null;\n if (\n !table ||\n !table.namespace ||\n !table.isSelectable ||\n omit(table, \"order\")\n ) {\n return args;\n }\n if (proc) {\n if (!proc.tags.sortable) {\n return args;\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 cursorPrefixFromOrderBy = orderBy => {\n if (orderBy) {\n const cursorPrefixes = [];\n for (\n let itemIndex = 0, itemCount = orderBy.length;\n itemIndex < itemCount;\n itemIndex++\n ) {\n const item = orderBy[itemIndex];\n if (item.alias) {\n cursorPrefixes.push(sql.literal(item.alias));\n }\n }\n if (cursorPrefixes.length > 0) {\n return cursorPrefixes;\n }\n }\n return null;\n };\n\n addArgDataGenerator(function connectionOrderBy({ orderBy: rawOrderBy }) {\n const orderBy = rawOrderBy\n ? Array.isArray(rawOrderBy)\n ? rawOrderBy\n : [rawOrderBy]\n : null;\n return {\n pgCursorPrefix: cursorPrefixFromOrderBy(orderBy),\n pgQuery: queryBuilder => {\n if (orderBy != null) {\n orderBy.forEach(item => {\n const { specs, unique } = item;\n const orders =\n Array.isArray(specs[0]) || specs.length === 0\n ? specs\n : [specs];\n orders.forEach(([col, ascending, specNullsFirst]) => {\n const expr = isString(col)\n ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n col\n )}`\n : col;\n // If the enum specifies null ordering, use that\n // Otherwise, use the orderByNullsLast option if present\n const nullsFirst =\n specNullsFirst != null\n ? specNullsFirst\n : orderByNullsLast != null\n ? !orderByNullsLast\n : undefined;\n queryBuilder.orderBy(expr, ascending, nullsFirst);\n });\n if (unique) {\n queryBuilder.setOrderIsUnique();\n }\n });\n }\n },\n };\n });\n\n return extend(\n args,\n {\n orderBy: {\n description: build.wrapDescription(\n `The method to use when ordering \\`${tableTypeName}\\`.`,\n \"arg\"\n ),\n type: new GraphQLList(new GraphQLNonNull(TableOrderByType)),\n },\n },\n `Adding 'orderBy' argument to field '${fieldName}' of '${Self.name}'`\n );\n },\n [\"PgConnectionArgOrderBy\"]\n );\n}: Plugin);\n"],"file":"PgConnectionArgOrderBy.js"}
|
|
1
|
+
{"version":3,"file":"PgConnectionArgOrderBy.js","names":["_isString","_interopRequireDefault","require","obj","__esModule","default","PgConnectionArgOrderBy","builder","orderByNullsLast","hook","_","build","newWithHooks","pgIntrospectionResultsByKind","introspectionResultsByKind","graphql","GraphQLEnumType","inflection","pgOmit","omit","sqlCommentByAddingTags","describePgEntity","class","forEach","table","isSelectable","namespace","tableTypeName","tableType","name","orderByType","description","wrapDescription","values","builtin","value","alias","specs","__origin","pgIntrospection","isPgRowSortEnum","args","context","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","pgSql","sql","GraphQLList","GraphQLNonNull","scope","fieldName","isPgFieldConnection","isPgFieldSimpleCollection","pgFieldIntrospection","pgFieldIntrospectionTable","addArgDataGenerator","Self","proc","kind","tags","sortable","TableType","type","id","TableOrderByType","cursorPrefixFromOrderBy","orderBy","cursorPrefixes","itemIndex","itemCount","length","item","push","literal","connectionOrderBy","rawOrderBy","Array","isArray","pgCursorPrefix","pgQuery","queryBuilder","unique","orders","col","ascending","specNullsFirst","expr","isString","fragment","getTableAlias","identifier","nullsFirst","undefined","setOrderIsUnique","exports"],"sources":["../../src/plugins/PgConnectionArgOrderBy.js"],"sourcesContent":["// @flow\nimport isString from \"lodash/isString\";\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgConnectionArgOrderBy(builder, { orderByNullsLast }) {\n builder.hook(\n \"init\",\n (_, build) => {\n const {\n newWithHooks,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n graphql: { GraphQLEnumType },\n inflection,\n pgOmit: omit,\n sqlCommentByAddingTags,\n describePgEntity,\n } = build;\n introspectionResultsByKind.class.forEach(table => {\n // PERFORMANCE: These used to be .filter(...) calls\n if (!table.isSelectable || omit(table, \"order\")) return;\n if (!table.namespace) return;\n\n const tableTypeName = inflection.tableType(table);\n /* const TableOrderByType = */\n newWithHooks(\n GraphQLEnumType,\n {\n name: inflection.orderByType(tableTypeName),\n description: build.wrapDescription(\n `Methods to use when ordering \\`${tableTypeName}\\`.`,\n \"type\"\n ),\n values: {\n [inflection.builtin(\"NATURAL\")]: {\n value: {\n alias: null,\n specs: [],\n },\n },\n },\n },\n {\n __origin: `Adding connection \"orderBy\" argument 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 pgIntrospection: table,\n isPgRowSortEnum: true,\n }\n );\n });\n return _;\n },\n [\"PgConnectionArgOrderBy\"]\n );\n\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n pgSql: sql,\n graphql: { GraphQLList, GraphQLNonNull },\n inflection,\n pgOmit: omit,\n } = build;\n const {\n scope: {\n fieldName,\n isPgFieldConnection,\n isPgFieldSimpleCollection,\n pgFieldIntrospection,\n pgFieldIntrospectionTable,\n },\n addArgDataGenerator,\n Self,\n } = context;\n\n if (!isPgFieldConnection && !isPgFieldSimpleCollection) {\n return args;\n }\n\n const proc =\n pgFieldIntrospection.kind === \"procedure\" ? pgFieldIntrospection : null;\n const table =\n pgFieldIntrospection.kind === \"class\"\n ? pgFieldIntrospection\n : proc\n ? pgFieldIntrospectionTable\n : null;\n if (\n !table ||\n !table.namespace ||\n !table.isSelectable ||\n omit(table, \"order\")\n ) {\n return args;\n }\n if (proc) {\n if (!proc.tags.sortable) {\n return args;\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 cursorPrefixFromOrderBy = orderBy => {\n if (orderBy) {\n const cursorPrefixes = [];\n for (\n let itemIndex = 0, itemCount = orderBy.length;\n itemIndex < itemCount;\n itemIndex++\n ) {\n const item = orderBy[itemIndex];\n if (item.alias) {\n cursorPrefixes.push(sql.literal(item.alias));\n }\n }\n if (cursorPrefixes.length > 0) {\n return cursorPrefixes;\n }\n }\n return null;\n };\n\n addArgDataGenerator(function connectionOrderBy({ orderBy: rawOrderBy }) {\n const orderBy = rawOrderBy\n ? Array.isArray(rawOrderBy)\n ? rawOrderBy\n : [rawOrderBy]\n : null;\n return {\n pgCursorPrefix: cursorPrefixFromOrderBy(orderBy),\n pgQuery: queryBuilder => {\n if (orderBy != null) {\n orderBy.forEach(item => {\n const { specs, unique } = item;\n const orders =\n Array.isArray(specs[0]) || specs.length === 0\n ? specs\n : [specs];\n orders.forEach(([col, ascending, specNullsFirst]) => {\n const expr = isString(col)\n ? sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n col\n )}`\n : col;\n // If the enum specifies null ordering, use that\n // Otherwise, use the orderByNullsLast option if present\n const nullsFirst =\n specNullsFirst != null\n ? specNullsFirst\n : orderByNullsLast != null\n ? !orderByNullsLast\n : undefined;\n queryBuilder.orderBy(expr, ascending, nullsFirst);\n });\n if (unique) {\n queryBuilder.setOrderIsUnique();\n }\n });\n }\n },\n };\n });\n\n return extend(\n args,\n {\n orderBy: {\n description: build.wrapDescription(\n `The method to use when ordering \\`${tableTypeName}\\`.`,\n \"arg\"\n ),\n type: new GraphQLList(new GraphQLNonNull(TableOrderByType)),\n },\n },\n `Adding 'orderBy' argument to field '${fieldName}' of '${Self.name}'`\n );\n },\n [\"PgConnectionArgOrderBy\"]\n );\n}: Plugin);\n"],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var PgConnectionArgOrderByDefaultValue = function PgConnectionArgOrderByDefaultValue(builder) {
|
|
9
8
|
builder.hook("GraphQLObjectType:fields:field:args", (args, build, context) => {
|
|
10
9
|
const {
|
|
@@ -21,19 +20,15 @@ var PgConnectionArgOrderByDefaultValue = function PgConnectionArgOrderByDefaultV
|
|
|
21
20
|
},
|
|
22
21
|
Self
|
|
23
22
|
} = context;
|
|
24
|
-
|
|
25
23
|
if (!isPgFieldConnection || !table || table.kind !== "class" || !table.namespace || !table.isSelectable || !args.orderBy) {
|
|
26
24
|
return args;
|
|
27
25
|
}
|
|
28
|
-
|
|
29
26
|
const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);
|
|
30
27
|
const tableTypeName = TableType.name;
|
|
31
28
|
const TableOrderByType = getTypeByName(inflection.orderByType(tableTypeName));
|
|
32
|
-
|
|
33
29
|
if (!TableOrderByType) {
|
|
34
30
|
return args;
|
|
35
31
|
}
|
|
36
|
-
|
|
37
32
|
const primaryKeyAsc = inflection.builtin("PRIMARY_KEY_ASC");
|
|
38
33
|
const defaultValueEnum = TableOrderByType.getValues().find(v => v.name === primaryKeyAsc) || TableOrderByType.getValues()[0];
|
|
39
34
|
return extend(args, {
|
|
@@ -43,6 +38,5 @@ var PgConnectionArgOrderByDefaultValue = function PgConnectionArgOrderByDefaultV
|
|
|
43
38
|
});
|
|
44
39
|
}, ["PgConnectionArgOrderByDefaultValue"]);
|
|
45
40
|
};
|
|
46
|
-
|
|
47
41
|
exports.default = PgConnectionArgOrderByDefaultValue;
|
|
48
42
|
//# sourceMappingURL=PgConnectionArgOrderByDefaultValue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"PgConnectionArgOrderByDefaultValue.js","names":["PgConnectionArgOrderByDefaultValue","builder","hook","args","build","context","extend","getTypeByName","pgGetGqlTypeByTypeIdAndModifier","inflection","scope","fieldName","isPgFieldConnection","pgFieldIntrospection","table","Self","kind","namespace","isSelectable","orderBy","TableType","type","id","tableTypeName","name","TableOrderByType","orderByType","primaryKeyAsc","builtin","defaultValueEnum","getValues","find","v","defaultValue","value","exports","default"],"sources":["../../src/plugins/PgConnectionArgOrderByDefaultValue.js"],"sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgConnectionArgOrderByDefaultValue(builder) {\n builder.hook(\n \"GraphQLObjectType:fields:field:args\",\n (args, build, context) => {\n const {\n extend,\n getTypeByName,\n pgGetGqlTypeByTypeIdAndModifier,\n inflection,\n } = build;\n const {\n scope: { fieldName, isPgFieldConnection, pgFieldIntrospection: table },\n Self,\n } = context;\n\n if (\n !isPgFieldConnection ||\n !table ||\n table.kind !== \"class\" ||\n !table.namespace ||\n !table.isSelectable ||\n !args.orderBy\n ) {\n return args;\n }\n const TableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);\n const tableTypeName = TableType.name;\n const TableOrderByType = getTypeByName(\n inflection.orderByType(tableTypeName)\n );\n if (!TableOrderByType) {\n return args;\n }\n\n const primaryKeyAsc = inflection.builtin(\"PRIMARY_KEY_ASC\");\n const defaultValueEnum =\n TableOrderByType.getValues().find(v => v.name === primaryKeyAsc) ||\n TableOrderByType.getValues()[0];\n\n return extend(args, {\n orderBy: extend(\n args.orderBy,\n {\n defaultValue: defaultValueEnum && [defaultValueEnum.value],\n },\n `Adding defaultValue to orderBy for field '${fieldName}' of '${Self.name}'`\n ),\n });\n },\n [\"PgConnectionArgOrderByDefaultValue\"]\n );\n}: Plugin);\n"],"mappings":";;;;;;IAGyBA,kCAAkC,GAA3C,SAASA,kCAAkCA,CAACC,OAAO,EAAE;EACnEA,OAAO,CAACC,IAAI,CACV,qCAAqC,EACrC,CAACC,IAAI,EAAEC,KAAK,EAAEC,OAAO,KAAK;IACxB,MAAM;MACJC,MAAM;MACNC,aAAa;MACbC,+BAA+B;MAC/BC;IACF,CAAC,GAAGL,KAAK;IACT,MAAM;MACJM,KAAK,EAAE;QAAEC,SAAS;QAAEC,mBAAmB;QAAEC,oBAAoB,EAAEC;MAAM,CAAC;MACtEC;IACF,CAAC,GAAGV,OAAO;IAEX,IACE,CAACO,mBAAmB,IACpB,CAACE,KAAK,IACNA,KAAK,CAACE,IAAI,KAAK,OAAO,IACtB,CAACF,KAAK,CAACG,SAAS,IAChB,CAACH,KAAK,CAACI,YAAY,IACnB,CAACf,IAAI,CAACgB,OAAO,EACb;MACA,OAAOhB,IAAI;IACb;IACA,MAAMiB,SAAS,GAAGZ,+BAA+B,CAACM,KAAK,CAACO,IAAI,CAACC,EAAE,EAAE,IAAI,CAAC;IACtE,MAAMC,aAAa,GAAGH,SAAS,CAACI,IAAI;IACpC,MAAMC,gBAAgB,GAAGlB,aAAa,CACpCE,UAAU,CAACiB,WAAW,CAACH,aAAa,CACtC,CAAC;IACD,IAAI,CAACE,gBAAgB,EAAE;MACrB,OAAOtB,IAAI;IACb;IAEA,MAAMwB,aAAa,GAAGlB,UAAU,CAACmB,OAAO,CAAC,iBAAiB,CAAC;IAC3D,MAAMC,gBAAgB,GACpBJ,gBAAgB,CAACK,SAAS,CAAC,CAAC,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACR,IAAI,KAAKG,aAAa,CAAC,IAChEF,gBAAgB,CAACK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjC,OAAOxB,MAAM,CAACH,IAAI,EAAE;MAClBgB,OAAO,EAAEb,MAAM,CACbH,IAAI,CAACgB,OAAO,EACZ;QACEc,YAAY,EAAEJ,gBAAgB,IAAI,CAACA,gBAAgB,CAACK,KAAK;MAC3D,CAAC,EACA,6CAA4CvB,SAAU,SAAQI,IAAI,CAACS,IAAK,GAC3E;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAAC,oCAAoC,CACvC,CAAC;AACH,CAAC;AAAAW,OAAA,CAAAC,OAAA,GAAApC,kCAAA"}
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var PgConnectionTotalCount = function PgConnectionTotalCount(builder) {
|
|
9
8
|
builder.hook("GraphQLObjectType:fields", (fields, build, context) => {
|
|
10
9
|
const {
|
|
@@ -25,17 +24,13 @@ var PgConnectionTotalCount = function PgConnectionTotalCount(builder) {
|
|
|
25
24
|
fieldWithHooks,
|
|
26
25
|
Self
|
|
27
26
|
} = context;
|
|
28
|
-
|
|
29
27
|
if (!isPgRowConnectionType) {
|
|
30
28
|
return fields;
|
|
31
29
|
}
|
|
32
|
-
|
|
33
30
|
const nodeTypeName = nodeType && nodeType.name ? nodeType.name : table && table.kind === "class" ? inflection.tableType(table) : null;
|
|
34
|
-
|
|
35
31
|
if (!nodeTypeName) {
|
|
36
32
|
return fields;
|
|
37
33
|
}
|
|
38
|
-
|
|
39
34
|
return extend(fields, {
|
|
40
35
|
totalCount: fieldWithHooks("totalCount", ({
|
|
41
36
|
addDataGenerator
|
|
@@ -50,11 +45,9 @@ var PgConnectionTotalCount = function PgConnectionTotalCount(builder) {
|
|
|
50
45
|
return {
|
|
51
46
|
description: build.wrapDescription(`The count of *all* \`${nodeTypeName}\` you could get from the connection.`, "field"),
|
|
52
47
|
type: new GraphQLNonNull(GraphQLInt),
|
|
53
|
-
|
|
54
48
|
resolve(parent) {
|
|
55
49
|
return parent.aggregates && parent.aggregates.totalCount || 0;
|
|
56
50
|
}
|
|
57
|
-
|
|
58
51
|
};
|
|
59
52
|
}, {
|
|
60
53
|
isPgConnectionTotalCountField: true
|
|
@@ -62,6 +55,5 @@ var PgConnectionTotalCount = function PgConnectionTotalCount(builder) {
|
|
|
62
55
|
}, `Adding totalCount to connection '${Self.name}'`);
|
|
63
56
|
}, ["PgConnectionTotalCount"]);
|
|
64
57
|
};
|
|
65
|
-
|
|
66
58
|
exports.default = PgConnectionTotalCount;
|
|
67
59
|
//# sourceMappingURL=PgConnectionTotalCount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"PgConnectionTotalCount.js","names":["PgConnectionTotalCount","builder","hook","fields","build","context","extend","inflection","graphql","GraphQLInt","GraphQLNonNull","pgSql","sql","scope","isPgRowConnectionType","pgIntrospection","table","nodeType","fieldWithHooks","Self","nodeTypeName","name","kind","tableType","totalCount","addDataGenerator","pgAggregateQuery","aggregateQueryBuilder","select","fragment","description","wrapDescription","type","resolve","parent","aggregates","isPgConnectionTotalCountField","exports","default"],"sources":["../../src/plugins/PgConnectionTotalCount.js"],"sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\n\nexport default (function PgConnectionTotalCount(builder) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n inflection,\n graphql: { GraphQLInt, GraphQLNonNull },\n pgSql: sql,\n } = build;\n const {\n scope: { isPgRowConnectionType, pgIntrospection: table, nodeType },\n fieldWithHooks,\n Self,\n } = context;\n\n if (!isPgRowConnectionType) {\n return fields;\n }\n\n const nodeTypeName =\n nodeType && nodeType.name\n ? nodeType.name\n : table && table.kind === \"class\"\n ? inflection.tableType(table)\n : null;\n if (!nodeTypeName) {\n return fields;\n }\n\n return extend(\n fields,\n {\n totalCount: fieldWithHooks(\n \"totalCount\",\n ({ addDataGenerator }) => {\n addDataGenerator(() => {\n return {\n pgAggregateQuery: aggregateQueryBuilder => {\n aggregateQueryBuilder.select(\n sql.fragment`count(1)`,\n \"totalCount\"\n );\n },\n };\n });\n return {\n description: build.wrapDescription(\n `The count of *all* \\`${nodeTypeName}\\` you could get from the connection.`,\n \"field\"\n ),\n type: new GraphQLNonNull(GraphQLInt),\n resolve(parent) {\n return (\n (parent.aggregates && parent.aggregates.totalCount) || 0\n );\n },\n };\n },\n {\n isPgConnectionTotalCountField: true,\n }\n ),\n },\n `Adding totalCount to connection '${Self.name}'`\n );\n },\n [\"PgConnectionTotalCount\"]\n );\n}: Plugin);\n"],"mappings":";;;;;;IAGyBA,sBAAsB,GAA/B,SAASA,sBAAsBA,CAACC,OAAO,EAAE;EACvDA,OAAO,CAACC,IAAI,CACV,0BAA0B,EAC1B,CAACC,MAAM,EAAEC,KAAK,EAAEC,OAAO,KAAK;IAC1B,MAAM;MACJC,MAAM;MACNC,UAAU;MACVC,OAAO,EAAE;QAAEC,UAAU;QAAEC;MAAe,CAAC;MACvCC,KAAK,EAAEC;IACT,CAAC,GAAGR,KAAK;IACT,MAAM;MACJS,KAAK,EAAE;QAAEC,qBAAqB;QAAEC,eAAe,EAAEC,KAAK;QAAEC;MAAS,CAAC;MAClEC,cAAc;MACdC;IACF,CAAC,GAAGd,OAAO;IAEX,IAAI,CAACS,qBAAqB,EAAE;MAC1B,OAAOX,MAAM;IACf;IAEA,MAAMiB,YAAY,GAChBH,QAAQ,IAAIA,QAAQ,CAACI,IAAI,GACrBJ,QAAQ,CAACI,IAAI,GACbL,KAAK,IAAIA,KAAK,CAACM,IAAI,KAAK,OAAO,GAC/Bf,UAAU,CAACgB,SAAS,CAACP,KAAK,CAAC,GAC3B,IAAI;IACV,IAAI,CAACI,YAAY,EAAE;MACjB,OAAOjB,MAAM;IACf;IAEA,OAAOG,MAAM,CACXH,MAAM,EACN;MACEqB,UAAU,EAAEN,cAAc,CACxB,YAAY,EACZ,CAAC;QAAEO;MAAiB,CAAC,KAAK;QACxBA,gBAAgB,CAAC,MAAM;UACrB,OAAO;YACLC,gBAAgB,EAAEC,qBAAqB,IAAI;cACzCA,qBAAqB,CAACC,MAAM,CAC1BhB,GAAG,CAACiB,QAAS,UAAS,EACtB,YACF,CAAC;YACH;UACF,CAAC;QACH,CAAC,CAAC;QACF,OAAO;UACLC,WAAW,EAAE1B,KAAK,CAAC2B,eAAe,CAC/B,wBAAuBX,YAAa,uCAAsC,EAC3E,OACF,CAAC;UACDY,IAAI,EAAE,IAAItB,cAAc,CAACD,UAAU,CAAC;UACpCwB,OAAOA,CAACC,MAAM,EAAE;YACd,OACGA,MAAM,CAACC,UAAU,IAAID,MAAM,CAACC,UAAU,CAACX,UAAU,IAAK,CAAC;UAE5D;QACF,CAAC;MACH,CAAC,EACD;QACEY,6BAA6B,EAAE;MACjC,CACF;IACF,CAAC,EACA,oCAAmCjB,IAAI,CAACE,IAAK,GAChD,CAAC;EACH,CAAC,EACD,CAAC,wBAAwB,CAC3B,CAAC;AACH,CAAC;AAAAgB,OAAA,CAAAC,OAAA,GAAAtC,sBAAA"}
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _debug = _interopRequireDefault(require("debug"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
const debug = (0, _debug.default)("graphile-build-pg");
|
|
13
|
-
|
|
14
10
|
var PgForwardRelationPlugin = function PgForwardRelationPlugin(builder, {
|
|
15
11
|
subscriptions
|
|
16
12
|
}) {
|
|
@@ -40,63 +36,50 @@ var PgForwardRelationPlugin = function PgForwardRelationPlugin(builder, {
|
|
|
40
36
|
Self
|
|
41
37
|
} = context;
|
|
42
38
|
const table = pgIntrospectionTable || pgIntrospection;
|
|
43
|
-
|
|
44
39
|
if (!(isPgRowType || isMutationPayload || isPgCompositeType) || !table || table.kind !== "class" || !table.namespace) {
|
|
45
40
|
return fields;
|
|
46
41
|
}
|
|
47
|
-
|
|
48
42
|
if (isMutationPayload && pgIntrospection.kind === "procedure" && (pgIntrospection.returnTypeId !== table.typeId || pgIntrospection.returnsSet)) {
|
|
49
43
|
return fields;
|
|
50
|
-
}
|
|
51
|
-
|
|
44
|
+
}
|
|
45
|
+
// This is a relation in which we (table) are local, and there's a foreign table
|
|
52
46
|
|
|
53
47
|
const foreignKeyConstraints = table.constraints.filter(con => con.type === "f");
|
|
54
48
|
return extend(fields, foreignKeyConstraints.reduce((memo, constraint) => {
|
|
55
49
|
if (omit(constraint, "read")) {
|
|
56
50
|
return memo;
|
|
57
51
|
}
|
|
58
|
-
|
|
59
52
|
const gqlTableType = pgGetGqlTypeByTypeIdAndModifier(table.type.id, null);
|
|
60
53
|
const tableTypeName = gqlTableType.name;
|
|
61
|
-
|
|
62
54
|
if (!gqlTableType) {
|
|
63
55
|
debug(`Could not determine type for table with id ${constraint.classId}`);
|
|
64
56
|
return memo;
|
|
65
57
|
}
|
|
66
|
-
|
|
67
58
|
const foreignTable = introspectionResultsByKind.classById[constraint.foreignClassId];
|
|
68
59
|
const gqlForeignTableType = pgGetGqlTypeByTypeIdAndModifier(foreignTable.type.id, null);
|
|
69
60
|
const foreignTableTypeName = gqlForeignTableType.name;
|
|
70
|
-
|
|
71
61
|
if (!gqlForeignTableType) {
|
|
72
62
|
debug(`Could not determine type for foreign table with id ${constraint.foreignClassId}`);
|
|
73
63
|
return memo;
|
|
74
64
|
}
|
|
75
|
-
|
|
76
65
|
if (!foreignTable) {
|
|
77
66
|
throw new Error(`Could not find the foreign table (constraint: ${constraint.name})`);
|
|
78
67
|
}
|
|
79
|
-
|
|
80
68
|
if (omit(foreignTable, "read")) {
|
|
81
69
|
return memo;
|
|
82
70
|
}
|
|
83
|
-
|
|
84
71
|
const foreignSchema = foreignTable.namespace;
|
|
85
72
|
const keys = constraint.keyAttributes;
|
|
86
73
|
const foreignKeys = constraint.foreignKeyAttributes;
|
|
87
|
-
|
|
88
74
|
if (!keys.every(_ => _) || !foreignKeys.every(_ => _)) {
|
|
89
75
|
throw new Error("Could not find key columns!");
|
|
90
76
|
}
|
|
91
|
-
|
|
92
77
|
if (keys.some(key => omit(key, "read"))) {
|
|
93
78
|
return memo;
|
|
94
79
|
}
|
|
95
|
-
|
|
96
80
|
if (foreignKeys.some(key => omit(key, "read"))) {
|
|
97
81
|
return memo;
|
|
98
82
|
}
|
|
99
|
-
|
|
100
83
|
const fieldName = inflection.singleRelationByKeys(keys, foreignTable, table, constraint);
|
|
101
84
|
memo = extend(memo, {
|
|
102
85
|
[fieldName]: fieldWithHooks(fieldName, ({
|
|
@@ -115,15 +98,12 @@ var PgForwardRelationPlugin = function PgForwardRelationPlugin(builder, {
|
|
|
115
98
|
asJson: true
|
|
116
99
|
}, innerQueryBuilder => {
|
|
117
100
|
innerQueryBuilder.parentQueryBuilder = queryBuilder;
|
|
118
|
-
|
|
119
101
|
if (subscriptions && table.primaryKeyConstraint) {
|
|
120
102
|
queryBuilder.selectIdentifiers(table);
|
|
121
103
|
}
|
|
122
|
-
|
|
123
104
|
if (subscriptions && foreignTable.primaryKeyConstraint) {
|
|
124
105
|
innerQueryBuilder.selectIdentifiers(foreignTable);
|
|
125
106
|
}
|
|
126
|
-
|
|
127
107
|
keys.forEach((key, i) => {
|
|
128
108
|
innerQueryBuilder.where(sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(key.name)} = ${foreignTableAlias}.${sql.identifier(foreignKeys[i].name)}`);
|
|
129
109
|
});
|
|
@@ -143,11 +123,9 @@ var PgForwardRelationPlugin = function PgForwardRelationPlugin(builder, {
|
|
|
143
123
|
const safeAlias = getSafeAliasFromResolveInfo(resolveInfo);
|
|
144
124
|
const record = data[safeAlias];
|
|
145
125
|
const liveRecord = resolveInfo.rootValue && resolveInfo.rootValue.liveRecord;
|
|
146
|
-
|
|
147
126
|
if (record && liveRecord) {
|
|
148
127
|
liveRecord("pg", foreignTable, record.__identifiers);
|
|
149
128
|
}
|
|
150
|
-
|
|
151
129
|
return record;
|
|
152
130
|
}
|
|
153
131
|
};
|
|
@@ -162,6 +140,5 @@ var PgForwardRelationPlugin = function PgForwardRelationPlugin(builder, {
|
|
|
162
140
|
}, {}), `Adding forward relations to '${Self.name}'`);
|
|
163
141
|
}, ["PgForwardRelation"]);
|
|
164
142
|
};
|
|
165
|
-
|
|
166
143
|
exports.default = PgForwardRelationPlugin;
|
|
167
144
|
//# sourceMappingURL=PgForwardRelationPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/PgForwardRelationPlugin.js"],"names":["debug","PgForwardRelationPlugin","builder","subscriptions","hook","fields","build","context","extend","getSafeAliasFromResolveInfo","getSafeAliasFromAlias","pgGetGqlTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","sqlCommentByAddingTags","describePgEntity","scope","isPgRowType","isPgCompositeType","isMutationPayload","pgIntrospection","pgIntrospectionTable","fieldWithHooks","Self","table","kind","namespace","returnTypeId","typeId","returnsSet","foreignKeyConstraints","constraints","filter","con","type","reduce","memo","constraint","gqlTableType","id","tableTypeName","name","classId","foreignTable","classById","foreignClassId","gqlForeignTableType","foreignTableTypeName","Error","foreignSchema","keys","keyAttributes","foreignKeys","foreignKeyAttributes","every","_","some","key","fieldName","singleRelationByKeys","getDataFromParsedResolveInfoFragment","addDataGenerator","parsedResolveInfoFragment","pgQuery","queryBuilder","select","resolveData","foreignTableAlias","identifier","Symbol","query","useAsterisk","asJson","innerQueryBuilder","parentQueryBuilder","primaryKeyConstraint","selectIdentifiers","forEach","i","where","fragment","getTableAlias","rootValue","alias","description","tags","forwardDescription","wrapDescription","resolve","rawData","_args","resolveContext","resolveInfo","data","safeAlias","record","liveRecord","__identifiers","pgFieldIntrospection","isPgForwardRelationField"],"mappings":";;;;;;;AAEA;;;;AAEA,MAAMA,KAAK,GAAG,oBAAa,mBAAb,CAAd;;IAEyBC,uB,GAAT,SAASA,uBAAT,CAAiCC,OAAjC,EAA0C;AAAEC,EAAAA;AAAF,CAA1C,EAA6D;AAC3ED,EAAAA,OAAO,CAACE,IAAR,CACE,0BADF,EAEE,CAACC,MAAD,EAASC,KAAT,EAAgBC,OAAhB,KAA4B;AAC1B,UAAM;AACJC,MAAAA,MADI;AAEJC,MAAAA,2BAFI;AAGJC,MAAAA,qBAHI;AAIJC,MAAAA,+BAJI;AAKJC,MAAAA,4BAA4B,EAAEC,0BAL1B;AAMJC,MAAAA,KAAK,EAAEC,GANH;AAOJC,MAAAA,UAPI;AAQJC,MAAAA,sBAAsB,EAAEC,oBARpB;AASJC,MAAAA,MAAM,EAAEC,IATJ;AAUJC,MAAAA,sBAVI;AAWJC,MAAAA;AAXI,QAYFhB,KAZJ;AAaA,UAAM;AACJiB,MAAAA,KAAK,EAAE;AACLC,QAAAA,WADK;AAELC,QAAAA,iBAFK;AAGLC,QAAAA,iBAHK;AAILC,QAAAA,eAJK;AAKLC,QAAAA;AALK,OADH;AAQJC,MAAAA,cARI;AASJC,MAAAA;AATI,QAUFvB,OAVJ;AAYA,UAAMwB,KAAK,GAAGH,oBAAoB,IAAID,eAAtC;;AACA,QACE,EAAEH,WAAW,IAAIE,iBAAf,IAAoCD,iBAAtC,KACA,CAACM,KADD,IAEAA,KAAK,CAACC,IAAN,KAAe,OAFf,IAGA,CAACD,KAAK,CAACE,SAJT,EAKE;AACA,aAAO5B,MAAP;AACD;;AACD,QACEqB,iBAAiB,IACjBC,eAAe,CAACK,IAAhB,KAAyB,WADzB,KAECL,eAAe,CAACO,YAAhB,KAAiCH,KAAK,CAACI,MAAvC,IACCR,eAAe,CAACS,UAHlB,CADF,EAKE;AACA,aAAO/B,MAAP;AACD,KA1CyB,CA2C1B;;;AAEA,UAAMgC,qBAAqB,GAAGN,KAAK,CAACO,WAAN,CAAkBC,MAAlB,CAC5BC,GAAG,IAAIA,GAAG,CAACC,IAAJ,KAAa,GADQ,CAA9B;AAIA,WAAOjC,MAAM,CACXH,MADW,EAEXgC,qBAAqB,CAACK,MAAtB,CAA6B,CAACC,IAAD,EAAOC,UAAP,KAAsB;AACjD,UAAIxB,IAAI,CAACwB,UAAD,EAAa,MAAb,CAAR,EAA8B;AAC5B,eAAOD,IAAP;AACD;;AACD,YAAME,YAAY,GAAGlC,+BAA+B,CAClDoB,KAAK,CAACU,IAAN,CAAWK,EADuC,EAElD,IAFkD,CAApD;AAIA,YAAMC,aAAa,GAAGF,YAAY,CAACG,IAAnC;;AACA,UAAI,CAACH,YAAL,EAAmB;AACjB7C,QAAAA,KAAK,CACF,8CAA6C4C,UAAU,CAACK,OAAQ,EAD9D,CAAL;AAGA,eAAON,IAAP;AACD;;AACD,YAAMO,YAAY,GAChBrC,0BAA0B,CAACsC,SAA3B,CAAqCP,UAAU,CAACQ,cAAhD,CADF;AAEA,YAAMC,mBAAmB,GAAG1C,+BAA+B,CACzDuC,YAAY,CAACT,IAAb,CAAkBK,EADuC,EAEzD,IAFyD,CAA3D;AAIA,YAAMQ,oBAAoB,GAAGD,mBAAmB,CAACL,IAAjD;;AACA,UAAI,CAACK,mBAAL,EAA0B;AACxBrD,QAAAA,KAAK,CACF,sDAAqD4C,UAAU,CAACQ,cAAe,EAD7E,CAAL;AAGA,eAAOT,IAAP;AACD;;AACD,UAAI,CAACO,YAAL,EAAmB;AACjB,cAAM,IAAIK,KAAJ,CACH,iDAAgDX,UAAU,CAACI,IAAK,GAD7D,CAAN;AAGD;;AACD,UAAI5B,IAAI,CAAC8B,YAAD,EAAe,MAAf,CAAR,EAAgC;AAC9B,eAAOP,IAAP;AACD;;AACD,YAAMa,aAAa,GAAGN,YAAY,CAACjB,SAAnC;AAEA,YAAMwB,IAAI,GAAGb,UAAU,CAACc,aAAxB;AACA,YAAMC,WAAW,GAAGf,UAAU,CAACgB,oBAA/B;;AACA,UAAI,CAACH,IAAI,CAACI,KAAL,CAAWC,CAAC,IAAIA,CAAhB,CAAD,IAAuB,CAACH,WAAW,CAACE,KAAZ,CAAkBC,CAAC,IAAIA,CAAvB,CAA5B,EAAuD;AACrD,cAAM,IAAIP,KAAJ,CAAU,6BAAV,CAAN;AACD;;AACD,UAAIE,IAAI,CAACM,IAAL,CAAUC,GAAG,IAAI5C,IAAI,CAAC4C,GAAD,EAAM,MAAN,CAArB,CAAJ,EAAyC;AACvC,eAAOrB,IAAP;AACD;;AACD,UAAIgB,WAAW,CAACI,IAAZ,CAAiBC,GAAG,IAAI5C,IAAI,CAAC4C,GAAD,EAAM,MAAN,CAA5B,CAAJ,EAAgD;AAC9C,eAAOrB,IAAP;AACD;;AAED,YAAMsB,SAAS,GAAGjD,UAAU,CAACkD,oBAAX,CAChBT,IADgB,EAEhBP,YAFgB,EAGhBnB,KAHgB,EAIhBa,UAJgB,CAAlB;AAOAD,MAAAA,IAAI,GAAGnC,MAAM,CACXmC,IADW,EAEX;AACE,SAACsB,SAAD,GAAapC,cAAc,CACzBoC,SADyB,EAEzB,CAAC;AACCE,UAAAA,oCADD;AAECC,UAAAA;AAFD,SAAD,KAGM;AACJA,UAAAA,gBAAgB,CAACC,yBAAyB,IAAI;AAC5C,mBAAO;AACLC,cAAAA,OAAO,EAAEC,YAAY,IAAI;AACvBA,gBAAAA,YAAY,CAACC,MAAb,CAAoB,MAAM;AACxB,wBAAMC,WAAW,GACfN,oCAAoC,CAClCE,yBADkC,EAElChB,mBAFkC,CADtC;AAKA,wBAAMqB,iBAAiB,GAAG3D,GAAG,CAAC4D,UAAJ,CAAeC,MAAM,EAArB,CAA1B;AACA,wBAAMC,KAAK,GAAG3D,oBAAoB,CAChCH,GAAG,CAAC4D,UAAJ,CACEnB,aAAa,CAACR,IADhB,EAEEE,YAAY,CAACF,IAFf,CADgC,EAKhC0B,iBALgC,EAMhCD,WANgC,EAOhC;AACEK,oBAAAA,WAAW,EAAE,KADf;AACsB;AACpBC,oBAAAA,MAAM,EAAE;AAFV,mBAPgC,EAWhCC,iBAAiB,IAAI;AACnBA,oBAAAA,iBAAiB,CAACC,kBAAlB,GACEV,YADF;;AAEA,wBAAIpE,aAAa,IAAI4B,KAAK,CAACmD,oBAA3B,EAAiD;AAC/CX,sBAAAA,YAAY,CAACY,iBAAb,CAA+BpD,KAA/B;AACD;;AACD,wBACE5B,aAAa,IACb+C,YAAY,CAACgC,oBAFf,EAGE;AACAF,sBAAAA,iBAAiB,CAACG,iBAAlB,CACEjC,YADF;AAGD;;AACDO,oBAAAA,IAAI,CAAC2B,OAAL,CAAa,CAACpB,GAAD,EAAMqB,CAAN,KAAY;AACvBL,sBAAAA,iBAAiB,CAACM,KAAlB,CACEvE,GAAG,CAACwE,QAAS,GAAEhB,YAAY,CAACiB,aAAb,EAA6B,IAAGzE,GAAG,CAAC4D,UAAJ,CAC7CX,GAAG,CAAChB,IADyC,CAE7C,MAAK0B,iBAAkB,IAAG3D,GAAG,CAAC4D,UAAJ,CAC1BhB,WAAW,CAAC0B,CAAD,CAAX,CAAerC,IADW,CAE1B,EALJ;AAOD,qBARD;AASD,mBAlC+B,EAmChCuB,YAAY,CAAChE,OAnCmB,EAoChCgE,YAAY,CAACkB,SApCmB,CAAlC;AAsCA,yBAAO1E,GAAG,CAACwE,QAAS,IAAGV,KAAM,GAA7B;AACD,iBA9CD,EA8CGnE,qBAAqB,CAAC2D,yBAAyB,CAACqB,KAA3B,CA9CxB;AA+CD;AAjDI,aAAP;AAmDD,WApDe,CAAhB;AAqDA,iBAAO;AACLC,YAAAA,WAAW,EACT/C,UAAU,CAACgD,IAAX,CAAgBC,kBAAhB,IACAvF,KAAK,CAACwF,eAAN,CACG,oBAAmBxC,oBAAqB,gCAA+BP,aAAc,KADxF,EAEE,OAFF,CAHG;AAOLN,YAAAA,IAAI,EAAEY,mBAPD;AAOsB;AAC3B0C,YAAAA,OAAO,EAAE,CAACC,OAAD,EAAUC,KAAV,EAAiBC,cAAjB,EAAiCC,WAAjC,KAAiD;AACxD,oBAAMC,IAAI,GAAG1E,iBAAiB,GAAGsE,OAAO,CAACI,IAAX,GAAkBJ,OAAhD;AACA,kBAAI,CAACI,IAAL,EAAW,OAAO,IAAP;AACX,oBAAMC,SAAS,GACb5F,2BAA2B,CAAC0F,WAAD,CAD7B;AAEA,oBAAMG,MAAM,GAAGF,IAAI,CAACC,SAAD,CAAnB;AACA,oBAAME,UAAU,GACdJ,WAAW,CAACV,SAAZ,IACAU,WAAW,CAACV,SAAZ,CAAsBc,UAFxB;;AAGA,kBAAID,MAAM,IAAIC,UAAd,EAA0B;AACxBA,gBAAAA,UAAU,CAAC,IAAD,EAAOrD,YAAP,EAAqBoD,MAAM,CAACE,aAA5B,CAAV;AACD;;AACD,qBAAOF,MAAP;AACD;AArBI,WAAP;AAuBD,SAlFwB,EAmFzB;AACEG,UAAAA,oBAAoB,EAAE7D,UADxB;AAEE8D,UAAAA,wBAAwB,EAAE;AAF5B,SAnFyB;AAD7B,OAFW,EA4FV,wBAAuBpF,gBAAgB,CACtCsB,UADsC,CAEtC,0DAAyDvB,sBAAsB,CAC/EuB,UAD+E,EAE/E;AACEqB,QAAAA,SAAS,EAAE;AADb,OAF+E,CAK/E,EAnGS,CAAb;AAqGA,aAAOtB,IAAP;AACD,KA/JD,EA+JG,EA/JH,CAFW,EAkKV,gCAA+Bb,IAAI,CAACkB,IAAK,GAlK/B,CAAb;AAoKD,GAvNH,EAwNE,CAAC,mBAAD,CAxNF;AA0ND,C","sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nexport default (function PgForwardRelationPlugin(builder, { subscriptions }) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n getSafeAliasFromResolveInfo,\n getSafeAliasFromAlias,\n pgGetGqlTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgOmit: omit,\n sqlCommentByAddingTags,\n describePgEntity,\n } = build;\n const {\n scope: {\n isPgRowType,\n isPgCompositeType,\n isMutationPayload,\n pgIntrospection,\n pgIntrospectionTable,\n },\n fieldWithHooks,\n Self,\n } = context;\n\n const table = pgIntrospectionTable || pgIntrospection;\n if (\n !(isPgRowType || isMutationPayload || isPgCompositeType) ||\n !table ||\n table.kind !== \"class\" ||\n !table.namespace\n ) {\n return fields;\n }\n if (\n isMutationPayload &&\n pgIntrospection.kind === \"procedure\" &&\n (pgIntrospection.returnTypeId !== table.typeId ||\n pgIntrospection.returnsSet)\n ) {\n return fields;\n }\n // This is a relation in which we (table) are local, and there's a foreign table\n\n const foreignKeyConstraints = table.constraints.filter(\n con => con.type === \"f\"\n );\n\n return extend(\n fields,\n foreignKeyConstraints.reduce((memo, constraint) => {\n if (omit(constraint, \"read\")) {\n return memo;\n }\n const gqlTableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n const tableTypeName = gqlTableType.name;\n if (!gqlTableType) {\n debug(\n `Could not determine type for table with id ${constraint.classId}`\n );\n return memo;\n }\n const foreignTable =\n introspectionResultsByKind.classById[constraint.foreignClassId];\n const gqlForeignTableType = pgGetGqlTypeByTypeIdAndModifier(\n foreignTable.type.id,\n null\n );\n const foreignTableTypeName = gqlForeignTableType.name;\n if (!gqlForeignTableType) {\n debug(\n `Could not determine type for foreign table with id ${constraint.foreignClassId}`\n );\n return memo;\n }\n if (!foreignTable) {\n throw new Error(\n `Could not find the foreign table (constraint: ${constraint.name})`\n );\n }\n if (omit(foreignTable, \"read\")) {\n return memo;\n }\n const foreignSchema = foreignTable.namespace;\n\n const keys = constraint.keyAttributes;\n const foreignKeys = constraint.foreignKeyAttributes;\n if (!keys.every(_ => _) || !foreignKeys.every(_ => _)) {\n throw new Error(\"Could not find key columns!\");\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n if (foreignKeys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n\n const fieldName = inflection.singleRelationByKeys(\n keys,\n foreignTable,\n table,\n constraint\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n ({\n getDataFromParsedResolveInfoFragment,\n addDataGenerator,\n }) => {\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(() => {\n const resolveData =\n getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n gqlForeignTableType\n );\n const foreignTableAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n sql.identifier(\n foreignSchema.name,\n foreignTable.name\n ),\n foreignTableAlias,\n resolveData,\n {\n useAsterisk: false, // Because it's only a single relation, no need\n asJson: true,\n },\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder =\n queryBuilder;\n if (subscriptions && table.primaryKeyConstraint) {\n queryBuilder.selectIdentifiers(table);\n }\n if (\n subscriptions &&\n foreignTable.primaryKeyConstraint\n ) {\n innerQueryBuilder.selectIdentifiers(\n foreignTable\n );\n }\n keys.forEach((key, i) => {\n innerQueryBuilder.where(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )} = ${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`\n );\n });\n },\n queryBuilder.context,\n queryBuilder.rootValue\n );\n return sql.fragment`(${query})`;\n }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias));\n },\n };\n });\n return {\n description:\n constraint.tags.forwardDescription ||\n build.wrapDescription(\n `Reads a single \\`${foreignTableTypeName}\\` that is related to this \\`${tableTypeName}\\`.`,\n \"field\"\n ),\n type: gqlForeignTableType, // Nullable since RLS may forbid fetching\n resolve: (rawData, _args, resolveContext, resolveInfo) => {\n const data = isMutationPayload ? rawData.data : rawData;\n if (!data) return null;\n const safeAlias =\n getSafeAliasFromResolveInfo(resolveInfo);\n const record = data[safeAlias];\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n if (record && liveRecord) {\n liveRecord(\"pg\", foreignTable, record.__identifiers);\n }\n return record;\n },\n };\n },\n {\n pgFieldIntrospection: constraint,\n isPgForwardRelationField: true,\n }\n ),\n },\n `Forward relation for ${describePgEntity(\n constraint\n )}. To rename this relation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n constraint,\n {\n fieldName: \"newNameHere\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding forward relations to '${Self.name}'`\n );\n },\n [\"PgForwardRelation\"]\n );\n}: Plugin);\n"],"file":"PgForwardRelationPlugin.js"}
|
|
1
|
+
{"version":3,"file":"PgForwardRelationPlugin.js","names":["_debug","_interopRequireDefault","require","obj","__esModule","default","debug","debugFactory","PgForwardRelationPlugin","builder","subscriptions","hook","fields","build","context","extend","getSafeAliasFromResolveInfo","getSafeAliasFromAlias","pgGetGqlTypeByTypeIdAndModifier","pgIntrospectionResultsByKind","introspectionResultsByKind","pgSql","sql","inflection","pgQueryFromResolveData","queryFromResolveData","pgOmit","omit","sqlCommentByAddingTags","describePgEntity","scope","isPgRowType","isPgCompositeType","isMutationPayload","pgIntrospection","pgIntrospectionTable","fieldWithHooks","Self","table","kind","namespace","returnTypeId","typeId","returnsSet","foreignKeyConstraints","constraints","filter","con","type","reduce","memo","constraint","gqlTableType","id","tableTypeName","name","classId","foreignTable","classById","foreignClassId","gqlForeignTableType","foreignTableTypeName","Error","foreignSchema","keys","keyAttributes","foreignKeys","foreignKeyAttributes","every","_","some","key","fieldName","singleRelationByKeys","getDataFromParsedResolveInfoFragment","addDataGenerator","parsedResolveInfoFragment","pgQuery","queryBuilder","select","resolveData","foreignTableAlias","identifier","Symbol","query","useAsterisk","asJson","innerQueryBuilder","parentQueryBuilder","primaryKeyConstraint","selectIdentifiers","forEach","i","where","fragment","getTableAlias","rootValue","alias","description","tags","forwardDescription","wrapDescription","resolve","rawData","_args","resolveContext","resolveInfo","data","safeAlias","record","liveRecord","__identifiers","pgFieldIntrospection","isPgForwardRelationField","exports"],"sources":["../../src/plugins/PgForwardRelationPlugin.js"],"sourcesContent":["// @flow\nimport type { Plugin } from \"graphile-build\";\nimport debugFactory from \"debug\";\n\nconst debug = debugFactory(\"graphile-build-pg\");\n\nexport default (function PgForwardRelationPlugin(builder, { subscriptions }) {\n builder.hook(\n \"GraphQLObjectType:fields\",\n (fields, build, context) => {\n const {\n extend,\n getSafeAliasFromResolveInfo,\n getSafeAliasFromAlias,\n pgGetGqlTypeByTypeIdAndModifier,\n pgIntrospectionResultsByKind: introspectionResultsByKind,\n pgSql: sql,\n inflection,\n pgQueryFromResolveData: queryFromResolveData,\n pgOmit: omit,\n sqlCommentByAddingTags,\n describePgEntity,\n } = build;\n const {\n scope: {\n isPgRowType,\n isPgCompositeType,\n isMutationPayload,\n pgIntrospection,\n pgIntrospectionTable,\n },\n fieldWithHooks,\n Self,\n } = context;\n\n const table = pgIntrospectionTable || pgIntrospection;\n if (\n !(isPgRowType || isMutationPayload || isPgCompositeType) ||\n !table ||\n table.kind !== \"class\" ||\n !table.namespace\n ) {\n return fields;\n }\n if (\n isMutationPayload &&\n pgIntrospection.kind === \"procedure\" &&\n (pgIntrospection.returnTypeId !== table.typeId ||\n pgIntrospection.returnsSet)\n ) {\n return fields;\n }\n // This is a relation in which we (table) are local, and there's a foreign table\n\n const foreignKeyConstraints = table.constraints.filter(\n con => con.type === \"f\"\n );\n\n return extend(\n fields,\n foreignKeyConstraints.reduce((memo, constraint) => {\n if (omit(constraint, \"read\")) {\n return memo;\n }\n const gqlTableType = pgGetGqlTypeByTypeIdAndModifier(\n table.type.id,\n null\n );\n const tableTypeName = gqlTableType.name;\n if (!gqlTableType) {\n debug(\n `Could not determine type for table with id ${constraint.classId}`\n );\n return memo;\n }\n const foreignTable =\n introspectionResultsByKind.classById[constraint.foreignClassId];\n const gqlForeignTableType = pgGetGqlTypeByTypeIdAndModifier(\n foreignTable.type.id,\n null\n );\n const foreignTableTypeName = gqlForeignTableType.name;\n if (!gqlForeignTableType) {\n debug(\n `Could not determine type for foreign table with id ${constraint.foreignClassId}`\n );\n return memo;\n }\n if (!foreignTable) {\n throw new Error(\n `Could not find the foreign table (constraint: ${constraint.name})`\n );\n }\n if (omit(foreignTable, \"read\")) {\n return memo;\n }\n const foreignSchema = foreignTable.namespace;\n\n const keys = constraint.keyAttributes;\n const foreignKeys = constraint.foreignKeyAttributes;\n if (!keys.every(_ => _) || !foreignKeys.every(_ => _)) {\n throw new Error(\"Could not find key columns!\");\n }\n if (keys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n if (foreignKeys.some(key => omit(key, \"read\"))) {\n return memo;\n }\n\n const fieldName = inflection.singleRelationByKeys(\n keys,\n foreignTable,\n table,\n constraint\n );\n\n memo = extend(\n memo,\n {\n [fieldName]: fieldWithHooks(\n fieldName,\n ({\n getDataFromParsedResolveInfoFragment,\n addDataGenerator,\n }) => {\n addDataGenerator(parsedResolveInfoFragment => {\n return {\n pgQuery: queryBuilder => {\n queryBuilder.select(() => {\n const resolveData =\n getDataFromParsedResolveInfoFragment(\n parsedResolveInfoFragment,\n gqlForeignTableType\n );\n const foreignTableAlias = sql.identifier(Symbol());\n const query = queryFromResolveData(\n sql.identifier(\n foreignSchema.name,\n foreignTable.name\n ),\n foreignTableAlias,\n resolveData,\n {\n useAsterisk: false, // Because it's only a single relation, no need\n asJson: true,\n },\n innerQueryBuilder => {\n innerQueryBuilder.parentQueryBuilder =\n queryBuilder;\n if (subscriptions && table.primaryKeyConstraint) {\n queryBuilder.selectIdentifiers(table);\n }\n if (\n subscriptions &&\n foreignTable.primaryKeyConstraint\n ) {\n innerQueryBuilder.selectIdentifiers(\n foreignTable\n );\n }\n keys.forEach((key, i) => {\n innerQueryBuilder.where(\n sql.fragment`${queryBuilder.getTableAlias()}.${sql.identifier(\n key.name\n )} = ${foreignTableAlias}.${sql.identifier(\n foreignKeys[i].name\n )}`\n );\n });\n },\n queryBuilder.context,\n queryBuilder.rootValue\n );\n return sql.fragment`(${query})`;\n }, getSafeAliasFromAlias(parsedResolveInfoFragment.alias));\n },\n };\n });\n return {\n description:\n constraint.tags.forwardDescription ||\n build.wrapDescription(\n `Reads a single \\`${foreignTableTypeName}\\` that is related to this \\`${tableTypeName}\\`.`,\n \"field\"\n ),\n type: gqlForeignTableType, // Nullable since RLS may forbid fetching\n resolve: (rawData, _args, resolveContext, resolveInfo) => {\n const data = isMutationPayload ? rawData.data : rawData;\n if (!data) return null;\n const safeAlias =\n getSafeAliasFromResolveInfo(resolveInfo);\n const record = data[safeAlias];\n const liveRecord =\n resolveInfo.rootValue &&\n resolveInfo.rootValue.liveRecord;\n if (record && liveRecord) {\n liveRecord(\"pg\", foreignTable, record.__identifiers);\n }\n return record;\n },\n };\n },\n {\n pgFieldIntrospection: constraint,\n isPgForwardRelationField: true,\n }\n ),\n },\n `Forward relation for ${describePgEntity(\n constraint\n )}. To rename this relation with a 'Smart Comment':\\n\\n ${sqlCommentByAddingTags(\n constraint,\n {\n fieldName: \"newNameHere\",\n }\n )}`\n );\n return memo;\n }, {}),\n `Adding forward relations to '${Self.name}'`\n );\n },\n [\"PgForwardRelation\"]\n );\n}: Plugin);\n"],"mappings":"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"}
|