@pothos/plugin-drizzle 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +351 -0
  2. package/README.md +784 -221
  3. package/dts/connection-helpers.d.ts +18 -8
  4. package/dts/connection-helpers.d.ts.map +1 -1
  5. package/dts/drizzle-field-builder.d.ts +4 -11
  6. package/dts/drizzle-field-builder.d.ts.map +1 -1
  7. package/dts/global-types.d.ts.map +1 -1
  8. package/dts/index.d.ts.map +1 -1
  9. package/dts/model-loader.d.ts +18 -17
  10. package/dts/model-loader.d.ts.map +1 -1
  11. package/dts/types.d.ts +81 -20
  12. package/dts/types.d.ts.map +1 -1
  13. package/dts/utils/adapter.d.ts +39 -0
  14. package/dts/utils/adapter.d.ts.map +1 -0
  15. package/dts/utils/await-selections.d.ts +12 -0
  16. package/dts/utils/await-selections.d.ts.map +1 -0
  17. package/dts/utils/config.d.ts +23 -3
  18. package/dts/utils/config.d.ts.map +1 -1
  19. package/dts/utils/cursors.d.ts +6 -6
  20. package/dts/utils/cursors.d.ts.map +1 -1
  21. package/dts/utils/map-query.d.ts +22 -21
  22. package/dts/utils/map-query.d.ts.map +1 -1
  23. package/dts/utils/path-info.d.ts +13 -0
  24. package/dts/utils/path-info.d.ts.map +1 -0
  25. package/dts/utils/relation-filter.d.ts +48 -0
  26. package/dts/utils/relation-filter.d.ts.map +1 -0
  27. package/dts/utils/selections.d.ts +2 -21
  28. package/dts/utils/selections.d.ts.map +1 -1
  29. package/esm/connection-helpers.d.ts +18 -8
  30. package/esm/connection-helpers.d.ts.map +1 -1
  31. package/esm/connection-helpers.js +52 -19
  32. package/esm/connection-helpers.js.map +1 -1
  33. package/esm/drizzle-field-builder.d.ts +4 -11
  34. package/esm/drizzle-field-builder.d.ts.map +1 -1
  35. package/esm/drizzle-field-builder.js +138 -96
  36. package/esm/drizzle-field-builder.js.map +1 -1
  37. package/esm/field-builder.js +61 -47
  38. package/esm/field-builder.js.map +1 -1
  39. package/esm/global-types.d.ts.map +1 -1
  40. package/esm/index.d.ts.map +1 -1
  41. package/esm/index.js +37 -61
  42. package/esm/index.js.map +1 -1
  43. package/esm/model-loader.d.ts +18 -17
  44. package/esm/model-loader.d.ts.map +1 -1
  45. package/esm/model-loader.js +76 -45
  46. package/esm/model-loader.js.map +1 -1
  47. package/esm/schema-builder.js +40 -149
  48. package/esm/schema-builder.js.map +1 -1
  49. package/esm/types.d.ts +81 -20
  50. package/esm/types.d.ts.map +1 -1
  51. package/esm/types.js +1 -0
  52. package/esm/types.js.map +1 -1
  53. package/esm/utils/adapter.d.ts +39 -0
  54. package/esm/utils/adapter.d.ts.map +1 -0
  55. package/esm/utils/adapter.js +137 -0
  56. package/esm/utils/adapter.js.map +1 -0
  57. package/esm/utils/await-selections.d.ts +12 -0
  58. package/esm/utils/await-selections.d.ts.map +1 -0
  59. package/esm/utils/await-selections.js +19 -0
  60. package/esm/utils/await-selections.js.map +1 -0
  61. package/esm/utils/config.d.ts +23 -3
  62. package/esm/utils/config.d.ts.map +1 -1
  63. package/esm/utils/config.js +1 -4
  64. package/esm/utils/config.js.map +1 -1
  65. package/esm/utils/cursors.d.ts +6 -6
  66. package/esm/utils/cursors.d.ts.map +1 -1
  67. package/esm/utils/cursors.js +55 -90
  68. package/esm/utils/cursors.js.map +1 -1
  69. package/esm/utils/map-query.d.ts +22 -21
  70. package/esm/utils/map-query.d.ts.map +1 -1
  71. package/esm/utils/map-query.js +40 -336
  72. package/esm/utils/map-query.js.map +1 -1
  73. package/esm/utils/path-info.d.ts +13 -0
  74. package/esm/utils/path-info.d.ts.map +1 -0
  75. package/esm/utils/path-info.js +37 -0
  76. package/esm/utils/path-info.js.map +1 -0
  77. package/esm/utils/relation-filter.d.ts +48 -0
  78. package/esm/utils/relation-filter.d.ts.map +1 -0
  79. package/esm/utils/relation-filter.js +92 -0
  80. package/esm/utils/relation-filter.js.map +1 -0
  81. package/esm/utils/selections.d.ts +2 -21
  82. package/esm/utils/selections.d.ts.map +1 -1
  83. package/esm/utils/selections.js +1 -133
  84. package/esm/utils/selections.js.map +1 -1
  85. package/lib/connection-helpers.js +51 -18
  86. package/lib/connection-helpers.js.map +1 -1
  87. package/lib/drizzle-field-builder.js +136 -94
  88. package/lib/drizzle-field-builder.js.map +1 -1
  89. package/lib/field-builder.js +58 -44
  90. package/lib/field-builder.js.map +1 -1
  91. package/lib/index.js +36 -60
  92. package/lib/index.js.map +1 -1
  93. package/lib/model-loader.js +76 -45
  94. package/lib/model-loader.js.map +1 -1
  95. package/lib/schema-builder.js +40 -149
  96. package/lib/schema-builder.js.map +1 -1
  97. package/lib/types.js +4 -0
  98. package/lib/types.js.map +1 -1
  99. package/lib/utils/adapter.js +147 -0
  100. package/lib/utils/adapter.js.map +1 -0
  101. package/lib/utils/await-selections.js +20 -0
  102. package/lib/utils/await-selections.js.map +1 -0
  103. package/lib/utils/config.js +1 -4
  104. package/lib/utils/config.js.map +1 -1
  105. package/lib/utils/cursors.js +47 -88
  106. package/lib/utils/cursors.js.map +1 -1
  107. package/lib/utils/map-query.js +28 -341
  108. package/lib/utils/map-query.js.map +1 -1
  109. package/lib/utils/path-info.js +39 -0
  110. package/lib/utils/path-info.js.map +1 -0
  111. package/lib/utils/relation-filter.js +91 -0
  112. package/lib/utils/relation-filter.js.map +1 -0
  113. package/lib/utils/selections.js +3 -158
  114. package/lib/utils/selections.js.map +1 -1
  115. package/package.json +8 -6
  116. package/src/connection-helpers.ts +167 -53
  117. package/src/drizzle-field-builder.ts +296 -176
  118. package/src/field-builder.ts +110 -77
  119. package/src/global-types.ts +0 -32
  120. package/src/index.ts +42 -68
  121. package/src/model-loader.ts +110 -71
  122. package/src/schema-builder.ts +76 -169
  123. package/src/types.ts +176 -44
  124. package/src/utils/adapter.ts +197 -0
  125. package/src/utils/await-selections.ts +31 -0
  126. package/src/utils/config.ts +1 -5
  127. package/src/utils/cursors.ts +53 -81
  128. package/src/utils/map-query.ts +51 -708
  129. package/src/utils/path-info.ts +40 -0
  130. package/src/utils/relation-filter.ts +185 -0
  131. package/src/utils/selections.ts +2 -207
  132. package/dts/utils/deep-equal.d.ts +0 -2
  133. package/dts/utils/deep-equal.d.ts.map +0 -1
  134. package/dts/utils/drizzle-graphql.d.ts +0 -2
  135. package/dts/utils/drizzle-graphql.d.ts.map +0 -1
  136. package/dts/utils/loader-map.d.ts +0 -11
  137. package/dts/utils/loader-map.d.ts.map +0 -1
  138. package/dts/utils/usage.d.ts +0 -5
  139. package/dts/utils/usage.d.ts.map +0 -1
  140. package/esm/utils/deep-equal.d.ts +0 -2
  141. package/esm/utils/deep-equal.d.ts.map +0 -1
  142. package/esm/utils/deep-equal.js +0 -45
  143. package/esm/utils/deep-equal.js.map +0 -1
  144. package/esm/utils/drizzle-graphql.d.ts +0 -2
  145. package/esm/utils/drizzle-graphql.d.ts.map +0 -1
  146. package/esm/utils/drizzle-graphql.js +0 -232
  147. package/esm/utils/drizzle-graphql.js.map +0 -1
  148. package/esm/utils/loader-map.d.ts +0 -11
  149. package/esm/utils/loader-map.d.ts.map +0 -1
  150. package/esm/utils/loader-map.js +0 -35
  151. package/esm/utils/loader-map.js.map +0 -1
  152. package/esm/utils/usage.d.ts +0 -5
  153. package/esm/utils/usage.d.ts.map +0 -1
  154. package/esm/utils/usage.js +0 -59
  155. package/esm/utils/usage.js.map +0 -1
  156. package/lib/utils/deep-equal.js +0 -55
  157. package/lib/utils/deep-equal.js.map +0 -1
  158. package/lib/utils/drizzle-graphql.js +0 -236
  159. package/lib/utils/drizzle-graphql.js.map +0 -1
  160. package/lib/utils/loader-map.js +0 -56
  161. package/lib/utils/loader-map.js.map +0 -1
  162. package/lib/utils/usage.js +0 -83
  163. package/lib/utils/usage.js.map +0 -1
  164. package/src/utils/deep-equal.ts +0 -57
  165. package/src/utils/drizzle-graphql.ts +0 -274
  166. package/src/utils/loader-map.ts +0 -49
  167. package/src/utils/usage.ts +0 -62
@@ -9,12 +9,13 @@ Object.defineProperty(exports, "DrizzleObjectFieldBuilder", {
9
9
  }
10
10
  });
11
11
  const _core = require("@pothos/core");
12
+ const _selectionmapper = require("@pothos/selection-mapper");
12
13
  const _drizzleorm = require("drizzle-orm");
13
- const _graphql = require("graphql");
14
14
  const _config = require("./utils/config.js");
15
15
  const _cursors = require("./utils/cursors.js");
16
+ const _pathinfo = require("./utils/path-info.js");
16
17
  const _refs = require("./utils/refs.js");
17
- const _selections = require("./utils/selections.js");
18
+ const _relationfilter = require("./utils/relation-filter.js");
18
19
  function _define_property(obj, key, value) {
19
20
  if (key in obj) {
20
21
  Object.defineProperty(obj, key, {
@@ -70,18 +71,16 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
70
71
  }
71
72
  const ref = (_options_type = options.type) !== null && _options_type !== void 0 ? _options_type : (0, _refs.getRefFromModel)(relatedTable.name, this.builder);
72
73
  const { query = {}, extensions, ...rest } = options;
73
- const relationSelect = (args, context, nestedQuery, _resolveSelection, pathInfo)=>{
74
- const relQuery = {
74
+ // Built once per field: the select allocates nothing when the nested selection is sync. The
75
+ // nested selection already carries the field's `query` (it is merged into the child first),
76
+ // so nothing is spread over it.
77
+ const selectRelation = (nested)=>({
75
78
  columns: {},
76
79
  with: {
77
- [name]: (0, _selections.omitUndefinedKeys)({
78
- ...nestedQuery(query),
79
- ...typeof query === 'function' ? query(args, context, pathInfo) : query
80
- })
80
+ [name]: nested
81
81
  }
82
- };
83
- return relQuery;
84
- };
82
+ });
83
+ const relationSelect = (args, context, nestedQuery, _resolveSelection, pathInfo)=>(0, _core.completeValue)(nestedQuery(typeof query === 'function' ? query(args, context, pathInfo) : query), selectRelation);
85
84
  return this.field({
86
85
  ...rest,
87
86
  type: relationField instanceof _drizzleorm.Many ? [
@@ -89,7 +88,8 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
89
88
  ] : ref,
90
89
  extensions: {
91
90
  ...extensions,
92
- pothosDrizzleSelect: relationSelect
91
+ pothosDrizzleSelect: relationSelect,
92
+ pothosDrizzleLoaded: (value)=>value[name] !== undefined
93
93
  },
94
94
  resolve: (parent)=>parent[name]
95
95
  });
@@ -101,25 +101,18 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
101
101
  if (!relationField) {
102
102
  throw new _core.PothosSchemaError(`Could not find relation ${relationName} on table ${this.table}`);
103
103
  }
104
- const buildFilter = (parentTable)=>{
105
- const { sourceColumns, targetColumns } = relationField;
106
- return (0, _drizzleorm.and)(...sourceColumns.map((sourceCol, i)=>(0, _drizzleorm.eq)(targetColumns[i], parentTable[sourceCol.name])));
107
- };
104
+ // Explicit NOT NULL is required even for primary keys: SQLite permits nullable text and
105
+ // composite primary keys. Without a total identity the relation filter keeps EXISTS.
106
+ const targetKey = relationField.throughTable ? schemaConfig.getUniqueConstraints(relationField.targetTableName).find((columns)=>columns.every((column)=>column.notNull)) : undefined;
108
107
  const relationSelect = (args, context, nestedQuery)=>{
109
- var _selection_columns;
110
- const selection = options.select(buildFilter, args, context, nestedQuery);
111
- return {
112
- columns: (_selection_columns = selection.columns) !== null && _selection_columns !== void 0 ? _selection_columns : {},
113
- extras: selection.extras,
114
- with: selection.with
115
- };
108
+ const buildFilter = (parentTable)=>(0, _relationfilter.buildRelationFilter)((0, _config.getClient)(this.builder, context), relationField, parentTable, targetKey).filter;
109
+ return (0, _core.completeValue)(options.select(buildFilter, args, context, nestedQuery), pickSelection);
116
110
  };
111
+ const { select: _select, extensions, ...fieldOptions } = options;
117
112
  return this.field({
118
- type: options.type,
119
- nullable: options.nullable,
120
- args: options.args,
121
- description: options.description,
113
+ ...fieldOptions,
122
114
  extensions: {
115
+ ...extensions,
123
116
  pothosDrizzleSelect: relationSelect
124
117
  },
125
118
  resolve: options.resolve
@@ -132,17 +125,34 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
132
125
  const schemaConfig = (0, _config.getSchemaConfig)(this.builder);
133
126
  const relationField = (_schemaConfig_relations = schemaConfig.relations) === null || _schemaConfig_relations === void 0 ? void 0 : _schemaConfig_relations[this.table].relations[relationName];
134
127
  const relatedTable = schemaConfig.relations[relationField.targetTableName];
128
+ // A related row counts once however many junction rows lead to it, which the count needs a
129
+ // column identifying a target row to say. Without one it falls back to counting the target
130
+ // table filtered by the relation, which says the same thing more slowly.
131
+ const targetKey = schemaConfig.findPrimaryKey(relationField.targetTableName);
132
+ const distinctBy = (targetKey === null || targetKey === void 0 ? void 0 : targetKey.length) === 1 && targetKey[0].notNull ? targetKey[0] : undefined;
133
+ // Built once per field; the `extras` function it returns is what the plan carried before.
134
+ const countExtras = (whereClause, ctx, buildFilter)=>({
135
+ extras: {
136
+ [countKey]: (parent)=>{
137
+ const client = (0, _config.getClient)(this.builder, ctx);
138
+ if (!distinctBy) {
139
+ return client.$count(relatedTable.table, whereClause ? (0, _drizzleorm.and)(buildFilter(parent), whereClause) : buildFilter(parent));
140
+ }
141
+ return (0, _relationfilter.buildRelationFilter)(client, relationField, parent).countDistinctRows(distinctBy, whereClause);
142
+ }
143
+ }
144
+ });
135
145
  return this.relatedField(relationName, {
136
146
  ...options,
137
147
  type: 'Int',
138
148
  nullable: false,
149
+ extensions: {
150
+ ...options.extensions,
151
+ pothosDrizzleLoaded: (value)=>value[countKey] !== undefined
152
+ },
139
153
  select: (buildFilter, args, ctx)=>{
140
154
  const whereClause = typeof where === 'function' ? where(args, ctx) : where;
141
- return {
142
- extras: {
143
- [countKey]: (parent)=>(0, _config.getClient)(this.builder, ctx).$count(relatedTable.table, whereClause ? (0, _drizzleorm.and)(buildFilter(parent), whereClause) : buildFilter(parent))
144
- }
145
- };
155
+ return (0, _core.isThenable)(whereClause) ? whereClause.then((resolved)=>countExtras(resolved, ctx, buildFilter)) : countExtras(whereClause, ctx, buildFilter);
146
156
  },
147
157
  resolve: (parent)=>parent[countKey]
148
158
  });
@@ -186,9 +196,9 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
186
196
  'ID'
187
197
  ])), _define_property(this, "exposeStringList", this.createExpose([
188
198
  'String'
189
- ])), _define_property(this, "table", void 0), _define_property(this, "typename", void 0), _define_property(this, "relatedConnection", function relatedConnection(name, { maxSize = (_this_builder_options_drizzle = this.builder.options.drizzle) === null || _this_builder_options_drizzle === void 0 ? void 0 : _this_builder_options_drizzle.maxConnectionSize, defaultSize = (_this_builder_options_drizzle1 = this.builder.options.drizzle) === null || _this_builder_options_drizzle1 === void 0 ? void 0 : _this_builder_options_drizzle1.defaultConnectionSize, query, resolve: _, extensions, description, totalCount, ...options } = {}, connectionOptions = {}, edgeOptions = {}) {
199
+ ])), _define_property(this, "table", void 0), _define_property(this, "typename", void 0), _define_property(this, "relatedConnection", function relatedConnection(name, { maxSize = (_this_builder_options_drizzle = this.builder.options.drizzle) === null || _this_builder_options_drizzle === void 0 ? void 0 : _this_builder_options_drizzle.maxConnectionSize, defaultSize = (_this_builder_options_drizzle1 = this.builder.options.drizzle) === null || _this_builder_options_drizzle1 === void 0 ? void 0 : _this_builder_options_drizzle1.defaultConnectionSize, query, extensions, description, totalCount, ...options } = {}, connectionOptions = {}, edgeOptions = {}) {
190
200
  var _options_type;
191
- var _schemaConfig_relations;
201
+ var _schemaConfig_relations, _this_builder_options_drizzle2;
192
202
  const schemaConfig = (0, _config.getSchemaConfig)(this.builder);
193
203
  const relationField = (_schemaConfig_relations = schemaConfig.relations) === null || _schemaConfig_relations === void 0 ? void 0 : _schemaConfig_relations[this.table].relations[name];
194
204
  const relatedTable = schemaConfig.relations[relationField.targetTableName];
@@ -197,19 +207,31 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
197
207
  }
198
208
  const ref = (_options_type = options.type) !== null && _options_type !== void 0 ? _options_type : (0, _refs.getRefFromModel)(relationField.targetTableName, this.builder);
199
209
  let typeName;
200
- const buildCountFilter = (parentTable)=>{
201
- const { sourceColumns, targetColumns } = relationField;
202
- return (0, _drizzleorm.and)(...sourceColumns.map((sourceCol, i)=>(0, _drizzleorm.eq)(targetColumns[i], parentTable[sourceCol.name])));
210
+ const filterTotalCount = ((_this_builder_options_drizzle2 = this.builder.options.drizzle) === null || _this_builder_options_drizzle2 === void 0 ? void 0 : _this_builder_options_drizzle2.filterConnectionTotalCount) !== false;
211
+ // The count for `totalCount` matches the connection's own filter: what the relation selects
212
+ // (including a `through` join and the relation's own `where`) plus the `where` from the
213
+ // field's `query`, so the count agrees with the rows being paginated. The `where` goes
214
+ // through the same `relationsFilterToSQL` the relational query builder puts it through, and
215
+ // `countRows` combines the two in the same order, so the count's predicate is the page
216
+ // query's predicate less the limit and the keyset clauses.
217
+ const buildCount = (client, parentTable, where)=>{
218
+ const { countRows } = (0, _relationfilter.buildRelationFilter)(client, relationField, parentTable);
219
+ if (!where || !filterTotalCount) {
220
+ return countRows();
221
+ }
222
+ return countRows((0, _drizzleorm.relationsFilterToSQL)(relatedTable.table, where, relatedTable.relations, schemaConfig.relations));
203
223
  };
204
- const getQuery = (args, ctx, pathInfo)=>{
205
- var _ref, _ref1;
206
- const { limit, orderBy, where, ...fieldQuery } = (_ref = typeof query === 'function' ? query(args, ctx, pathInfo) : query) !== null && _ref !== void 0 ? _ref : {};
224
+ // The field's `query` may be async, so the result is a promise when it is. The `PathInfo` is
225
+ // provided by the adapter, and only read for a callback that takes one.
226
+ const resolveFieldQuery = (args, ctx, pathInfo)=>(0, _core.completeValue)(typeof query === 'function' ? query(args, ctx, pathInfo) : query, orEmpty);
227
+ const getQuery = (args, ctx, { limit, orderBy, where, ...fieldQuery })=>{
228
+ var _ref;
207
229
  const { cursorFields, columns, ...connectionQuery } = (0, _cursors.drizzleCursorConnectionQuery)({
208
230
  ctx,
209
231
  maxSize,
210
232
  defaultSize,
211
233
  args,
212
- orderBy: (_ref1 = typeof orderBy === 'function' ? orderBy(relatedTable.table) : orderBy) !== null && _ref1 !== void 0 ? _ref1 : (0, _config.getSchemaConfig)(this.builder).getPrimaryKey(relationField.targetTableName),
234
+ orderBy: (_ref = typeof orderBy === 'function' ? orderBy(relatedTable.table) : orderBy) !== null && _ref !== void 0 ? _ref : (0, _config.getSchemaConfig)(this.builder).getPrimaryKey(relationField.targetTableName),
213
235
  extras: fieldQuery.extras,
214
236
  where,
215
237
  config: schemaConfig,
@@ -228,23 +250,30 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
228
250
  cursorFields
229
251
  };
230
252
  };
231
- const relationSelect = (args, context, nestedQuery, getSelection, pathInfo)=>{
232
- typeName !== null && typeName !== void 0 ? typeName : typeName = this.builder.configStore.getTypeConfig(ref).name;
233
- const hasTotalCount = totalCount && !!getSelection([
234
- 'totalCount'
235
- ]);
236
- const hasEdges = !!getSelection([
237
- 'edges'
238
- ]);
239
- const hasNodes = !!getSelection([
240
- 'nodes'
241
- ]);
242
- const hasPageInfo = !!getSelection([
243
- 'pageInfo'
244
- ]);
245
- const totalCountOnly = hasTotalCount && !hasEdges && !hasNodes && !hasPageInfo;
253
+ const countKey = `_${name}_count`;
254
+ // What the document asks of this connection, read the way the planner reads it (through
255
+ // fragments, directives, and a wrapping type), so the resolve side agrees with the plan. The
256
+ // selection is read once per request and shared by every parent row.
257
+ const connectionSelectionFromNames = (selected)=>{
258
+ const hasTotalCount = !!totalCount && selected.has('totalCount');
259
+ for (const field of selected){
260
+ if (field !== 'totalCount' && field !== '__typename') {
261
+ return {
262
+ hasTotalCount,
263
+ totalCountOnly: false
264
+ };
265
+ }
266
+ }
267
+ return {
268
+ hasTotalCount,
269
+ totalCountOnly: hasTotalCount
270
+ };
271
+ };
272
+ const connectionSelection = (context, info)=>connectionSelectionFromNames((0, _selectionmapper.selectedFieldNames)(context, info));
273
+ // Built once per field, so a synchronous plan allocates nothing beyond the map itself.
274
+ const selectConnection = (fieldQuery, nested, context, hasTotalCount, totalCountOnly)=>{
246
275
  const countSelection = {
247
- [`_${name}_count`]: (parent)=>(0, _config.getClient)(this.builder, context).$count(relatedTable.table, buildCountFilter(parent))
276
+ [countKey]: (parent)=>buildCount((0, _config.getClient)(this.builder, context), parent, fieldQuery.where)
248
277
  };
249
278
  if (totalCountOnly) {
250
279
  return {
@@ -253,7 +282,21 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
253
282
  extras: countSelection
254
283
  };
255
284
  }
256
- const nested = nestedQuery(getQuery(args, context, pathInfo).select, {
285
+ return {
286
+ columns: {},
287
+ with: {
288
+ [name]: nested
289
+ },
290
+ extras: hasTotalCount ? countSelection : {}
291
+ };
292
+ };
293
+ const relationSelect = (args, context, nestedQuery, getSelection, pathInfo)=>{
294
+ typeName !== null && typeName !== void 0 ? typeName : typeName = this.builder.configStore.getTypeConfig(ref).name;
295
+ const { hasTotalCount, totalCountOnly } = connectionSelectionFromNames(getSelection());
296
+ const fieldQuery = resolveFieldQuery(args, context, pathInfo);
297
+ // The nested plan starts now, with a query that waits for the field's `query` when that is
298
+ // async, so every callback beneath the connection runs in the same tick.
299
+ const nested = totalCountOnly ? undefined : nestedQuery((0, _core.isThenable)(fieldQuery) ? fieldQuery.then((resolved)=>getQuery(args, context, resolved).select) : getQuery(args, context, fieldQuery).select, {
257
300
  getType: ()=>typeName,
258
301
  paths: [
259
302
  [
@@ -271,27 +314,34 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
271
314
  ]
272
315
  ]
273
316
  });
274
- return {
275
- columns: {},
276
- with: {
277
- [name]: nested
278
- },
279
- extras: hasTotalCount ? countSelection : {}
280
- };
317
+ return (0, _core.isThenable)(fieldQuery) || (0, _core.isThenable)(nested) ? Promise.all([
318
+ fieldQuery,
319
+ nested
320
+ ]).then(([resolvedQuery, resolvedNested])=>selectConnection(resolvedQuery, resolvedNested, context, hasTotalCount, totalCountOnly)) : selectConnection(fieldQuery, nested, context, hasTotalCount, totalCountOnly);
321
+ };
322
+ // The loaded path, per parent row: the rows are on the parent, only the page is needed.
323
+ const resolveLoaded = (fieldQuery, parent, args, context, countValue)=>{
324
+ const { select, cursorFields } = getQuery(args, context, fieldQuery);
325
+ return (0, _cursors.wrapConnectionResult)(parent[name], args, select.limit, (0, _cursors.getCursorFormatter)(cursorFields, schemaConfig), undefined, parent, countValue);
281
326
  };
282
327
  const fieldRef = this.connection({
283
328
  ...options,
284
329
  extensions: {
285
330
  ...extensions,
286
- pothosDrizzleSelect: relationSelect
331
+ pothosDrizzleSelect: relationSelect,
332
+ pothosDrizzleLoaded: (value, info, context)=>{
333
+ const { hasTotalCount, totalCountOnly } = connectionSelection(context, info);
334
+ return (!hasTotalCount || value[countKey] !== undefined) && (totalCountOnly || value[name] !== undefined);
335
+ }
287
336
  },
288
337
  description,
289
338
  type: ref,
290
339
  resolve: (parent, args, context, info)=>{
291
- const countKey = `_${name}_count`;
340
+ var _getLoaderMapping;
292
341
  const parentRecord = parent;
293
342
  const countValue = totalCount ? parentRecord[countKey] : undefined;
294
- if (!(name in parentRecord)) {
343
+ // Only totalCount was requested: the relation was never selected, so skip the cursors.
344
+ if (connectionSelection(context, info).totalCountOnly) {
295
345
  return {
296
346
  parent,
297
347
  args,
@@ -305,32 +355,13 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
305
355
  }
306
356
  };
307
357
  }
308
- // Detect totalCountOnly to skip cursor computation when only totalCount is requested
309
- const returnType = (0, _graphql.getNamedType)(info.returnType);
310
- const fields = (0, _graphql.isObjectType)(returnType) || (0, _graphql.isInterfaceType)(returnType) ? returnType.getFields() : {};
311
- const totalCountOnly = info.fieldNodes.every((selection)=>{
312
- var _selection_selectionSet;
313
- return (_selection_selectionSet = selection.selectionSet) === null || _selection_selectionSet === void 0 ? void 0 : _selection_selectionSet.selections.every((s)=>{
314
- var _fields_s_name_value_extensions, _fields_s_name_value;
315
- return s.kind === _graphql.Kind.FIELD && (((_fields_s_name_value = fields[s.name.value]) === null || _fields_s_name_value === void 0 ? void 0 : (_fields_s_name_value_extensions = _fields_s_name_value.extensions) === null || _fields_s_name_value_extensions === void 0 ? void 0 : _fields_s_name_value_extensions.pothosDrizzleTotalCount) || s.name.value === '__typename');
316
- });
317
- });
318
- if (totalCountOnly) {
319
- return {
320
- parent,
321
- args,
322
- totalCount: countValue,
323
- edges: [],
324
- pageInfo: {
325
- startCursor: null,
326
- endCursor: null,
327
- hasPreviousPage: false,
328
- hasNextPage: false
329
- }
330
- };
331
- }
332
- const { select, cursorFields } = getQuery(args, context);
333
- return (0, _cursors.wrapConnectionResult)(parentRecord[name], args, select.limit, (0, _cursors.getCursorFormatter)(cursorFields, schemaConfig), undefined, parent, countValue);
358
+ // The same position the select path planned this field at, recorded alongside its
359
+ // loader mapping, so a `query` that branches on its path pages the rows it selected.
360
+ // Asked of `parent`, because that is whose rows are being paged: a sibling row of the
361
+ // same list may have been loaded by a different plan, at a different position.
362
+ const position = (_getLoaderMapping = (0, _selectionmapper.getLoaderMapping)(context, info.path, info.parentType.name, parent)) === null || _getLoaderMapping === void 0 ? void 0 : _getLoaderMapping.position;
363
+ const fieldQuery = resolveFieldQuery(args, context, (0, _pathinfo.pathInfoFor)(position));
364
+ return (0, _core.isThenable)(fieldQuery) ? fieldQuery.then((resolved)=>resolveLoaded(resolved, parent, args, context, countValue)) : resolveLoaded(fieldQuery, parent, args, context, countValue);
334
365
  }
335
366
  }, connectionOptions instanceof _core.ObjectRef ? connectionOptions : {
336
367
  ...connectionOptions,
@@ -354,5 +385,16 @@ class DrizzleObjectFieldBuilder extends RootBuilder {
354
385
  this.typename = typename;
355
386
  }
356
387
  }
388
+ /** A relation `query` callback may return nothing; the connection then adds no filter. */ function orEmpty(query) {
389
+ return query !== null && query !== void 0 ? query : {};
390
+ }
391
+ /** A `relatedField` select's map, with the columns it may have left out defaulted. */ function pickSelection(selection) {
392
+ var _ref;
393
+ return {
394
+ columns: (_ref = selection === null || selection === void 0 ? void 0 : selection.columns) !== null && _ref !== void 0 ? _ref : {},
395
+ extras: selection === null || selection === void 0 ? void 0 : selection.extras,
396
+ with: selection === null || selection === void 0 ? void 0 : selection.with
397
+ };
398
+ }
357
399
 
358
400
  //# sourceMappingURL=drizzle-field-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/drizzle-field-builder.ts"],"names":["DrizzleObjectFieldBuilder","RootBuilder","RootFieldBuilder","variant","allArgs","isNull","nullable","options","ref","getRefFromModel","builder","selfSelect","_args","_context","nestedQuery","select","field","type","extensions","pothosDrizzleSelect","resolve","parent","args","context","info","parentIsNull","isThenable","then","resolved","relation","name","schemaConfig","getSchemaConfig","relationField","relations","table","relatedTable","targetTableName","PothosSchemaError","query","rest","relationSelect","_resolveSelection","pathInfo","relQuery","columns","with","omitUndefinedKeys","Many","relatedField","relationName","buildFilter","parentTable","sourceColumns","targetColumns","and","map","sourceCol","i","eq","selection","extras","description","relatedCount","where","countKey","ctx","whereClause","getClient","$count","expose","typeConfig","configStore","getTypeConfig","typename","graphqlKind","usingSelect","exposeField","pothosDrizzleVariant","createExpose","exposeBoolean","exposeFloat","exposeInt","exposeID","exposeString","exposeBooleanList","exposeFloatList","exposeIntList","exposeIDList","exposeStringList","relatedConnection","maxSize","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","_","totalCount","connectionOptions","edgeOptions","typeName","buildCountFilter","getQuery","limit","orderBy","fieldQuery","cursorFields","connectionQuery","drizzleCursorConnectionQuery","getPrimaryKey","config","Math","abs","getSelection","hasTotalCount","hasEdges","hasNodes","hasPageInfo","totalCountOnly","countSelection","nested","getType","paths","fieldRef","connection","parentRecord","countValue","undefined","edges","pageInfo","startCursor","endCursor","hasPreviousPage","hasNextPage","returnType","getNamedType","fields","isObjectType","isInterfaceType","getFields","fieldNodes","every","selectionSet","selections","s","kind","GraphQLKind","FIELD","value","pothosDrizzleTotalCount","wrapConnectionResult","getCursorFormatter","ObjectRef","t","int"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/drizzle-field-builder.ts"],"names":["DrizzleObjectFieldBuilder","RootBuilder","RootFieldBuilder","variant","allArgs","isNull","nullable","options","ref","getRefFromModel","builder","selfSelect","_args","_context","nestedQuery","select","field","type","extensions","pothosDrizzleSelect","resolve","parent","args","context","info","parentIsNull","isThenable","then","resolved","relation","name","schemaConfig","getSchemaConfig","relationField","relations","table","relatedTable","targetTableName","PothosSchemaError","query","rest","selectRelation","nested","columns","with","relationSelect","_resolveSelection","pathInfo","completeValue","Many","pothosDrizzleLoaded","value","undefined","relatedField","relationName","targetKey","throughTable","getUniqueConstraints","find","every","column","notNull","buildFilter","parentTable","buildRelationFilter","getClient","filter","pickSelection","_select","fieldOptions","relatedCount","where","countKey","findPrimaryKey","distinctBy","length","countExtras","whereClause","ctx","extras","client","$count","and","countDistinctRows","expose","typeConfig","configStore","getTypeConfig","typename","graphqlKind","usingSelect","exposeField","pothosDrizzleVariant","createExpose","exposeBoolean","exposeFloat","exposeInt","exposeID","exposeString","exposeBooleanList","exposeFloatList","exposeIntList","exposeIDList","exposeStringList","relatedConnection","maxSize","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","description","totalCount","connectionOptions","edgeOptions","typeName","filterTotalCount","filterConnectionTotalCount","buildCount","countRows","relationsFilterToSQL","resolveFieldQuery","orEmpty","getQuery","limit","orderBy","fieldQuery","cursorFields","connectionQuery","drizzleCursorConnectionQuery","getPrimaryKey","config","Math","abs","connectionSelectionFromNames","selected","hasTotalCount","has","totalCountOnly","connectionSelection","selectedFieldNames","selectConnection","countSelection","getSelection","getType","paths","Promise","all","resolvedQuery","resolvedNested","resolveLoaded","countValue","wrapConnectionResult","getCursorFormatter","fieldRef","connection","getLoaderMapping","parentRecord","edges","pageInfo","startCursor","endCursor","hasPreviousPage","hasNextPage","position","path","parentType","pathInfoFor","ObjectRef","fields","t","int","pothosDrizzleTotalCount","selection"],"mappings":"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"}
@@ -10,53 +10,66 @@ const _mapquery = require("./utils/map-query.js");
10
10
  const _refs = require("./utils/refs.js");
11
11
  var _this_builder_options_drizzle, _this_builder_options_drizzle1;
12
12
  const fieldBuilderProto = _core.RootFieldBuilder.prototype;
13
- fieldBuilderProto.drizzleField = function drizzleField({ type, resolve, ...options }) {
13
+ /** The `type` of a `drizzleField`, with a table name resolved to its ref, list-ness kept. */ function refForType(builder, type) {
14
14
  const modelOrRef = Array.isArray(type) ? type[0] : type;
15
- const typeRef = typeof modelOrRef === 'string' ? (0, _refs.getRefFromModel)(modelOrRef, this.builder) : modelOrRef;
16
- const typeParam = Array.isArray(type) ? [
15
+ const typeRef = typeof modelOrRef === 'string' ? (0, _refs.getRefFromModel)(modelOrRef, builder) : modelOrRef;
16
+ return Array.isArray(type) ? [
17
17
  typeRef
18
18
  ] : typeRef;
19
+ }
20
+ /**
21
+ * The resolver of a `drizzleField`: the plan for the field, then the user's resolver with a query
22
+ * builder over it. A promise while a selection beneath the field is async, so the resolver runs
23
+ * once the plan has settled and the builder it is handed never returns one. Built once per field,
24
+ * so a synchronous plan allocates nothing but the builder itself.
25
+ */ function planResolver(builder, resolve) {
26
+ const run = (plan, parent, args, context, info)=>resolve((select)=>(0, _mapquery.queryFromPlan)(plan, select), parent, args, context, info);
27
+ return (parent, args, context, info)=>{
28
+ const plan = (0, _mapquery.planFromInfo)({
29
+ config: (0, _config.getSchemaConfig)(builder),
30
+ context,
31
+ info
32
+ });
33
+ return (0, _core.isThenable)(plan) ? plan.then((settled)=>run(settled, parent, args, context, info)) : run(plan, parent, args, context, info);
34
+ };
35
+ }
36
+ fieldBuilderProto.drizzleField = function drizzleField({ type, resolve, ...options }) {
19
37
  return this.field({
20
38
  ...options,
21
- type: typeParam,
22
- resolve: (parent, args, context, info)=>{
23
- return resolve((select)=>(0, _mapquery.queryFromInfo)({
24
- config: (0, _config.getSchemaConfig)(this.builder),
25
- context,
26
- select,
27
- info
28
- }), parent, args, context, info);
29
- }
39
+ type: refForType(this.builder, type),
40
+ resolve: planResolver(this.builder, resolve)
30
41
  });
31
42
  };
32
43
  fieldBuilderProto.drizzleFieldWithInput = function drizzleFieldWithInput({ type, resolve, ...options }) {
33
- const modelOrRef = Array.isArray(type) ? type[0] : type;
34
- const typeRef = typeof modelOrRef === 'string' ? (0, _refs.getRefFromModel)(modelOrRef, this.builder) : modelOrRef;
35
- const typeParam = Array.isArray(type) ? [
36
- typeRef
37
- ] : typeRef;
38
44
  return this.fieldWithInput({
39
45
  ...options,
40
- type: typeParam,
41
- resolve: (parent, args, context, info)=>{
42
- return resolve((select)=>(0, _mapquery.queryFromInfo)({
43
- config: (0, _config.getSchemaConfig)(this.builder),
44
- context,
45
- select,
46
- info
47
- }), parent, args, context, info);
48
- }
46
+ type: refForType(this.builder, type),
47
+ resolve: planResolver(this.builder, resolve)
49
48
  });
50
49
  };
51
50
  fieldBuilderProto.drizzleConnection = function drizzleConnection({ type, maxSize = (_this_builder_options_drizzle = this.builder.options.drizzle) === null || _this_builder_options_drizzle === void 0 ? void 0 : _this_builder_options_drizzle.maxConnectionSize, defaultSize = (_this_builder_options_drizzle1 = this.builder.options.drizzle) === null || _this_builder_options_drizzle1 === void 0 ? void 0 : _this_builder_options_drizzle1.defaultConnectionSize, resolve, totalCount, ...options }, connectionOptions = {}, edgeOptions = {}) {
52
51
  const ref = typeof type === 'string' ? (0, _refs.getRefFromModel)(type, this.builder) : type;
53
52
  const typeName = this.builder.configStore.getTypeConfig(ref).name;
54
53
  const tableName = typeof type === 'string' ? type : ref.tableName;
54
+ // Built once per field: resolving with a synchronous plan allocates nothing beyond the
55
+ // callback `resolveDrizzleCursorConnection` was already handed.
56
+ const resolveConnection = (plan, parent, args, context, info, totalCountOnly)=>(0, _cursors.resolveDrizzleCursorConnection)(tableName, plan, (0, _config.getSchemaConfig)(this.builder), {
57
+ ctx: context,
58
+ maxSize,
59
+ defaultSize,
60
+ args,
61
+ totalCount: totalCount && (()=>totalCount(parent, args, context, info))
62
+ }, (q)=>{
63
+ if (totalCountOnly) {
64
+ return [];
65
+ }
66
+ return resolve(q, parent, args, context, info);
67
+ }, parent);
55
68
  const fieldRef = this.connection({
56
69
  ...options,
57
70
  type: ref,
58
71
  resolve: (parent, args, context, info)=>{
59
- const returnType = info.returnType;
72
+ const returnType = (0, _graphql.getNamedType)(info.returnType);
60
73
  const fields = (0, _graphql.isObjectType)(returnType) || (0, _graphql.isInterfaceType)(returnType) ? returnType.getFields() : {};
61
74
  const selections = info.fieldNodes;
62
75
  const totalCountOnly = selections.every((selection)=>{
@@ -66,23 +79,24 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection({ type, maxSize
66
79
  return s.kind === _graphql.Kind.FIELD && (((_fields_s_name_value = fields[s.name.value]) === null || _fields_s_name_value === void 0 ? void 0 : (_fields_s_name_value_extensions = _fields_s_name_value.extensions) === null || _fields_s_name_value_extensions === void 0 ? void 0 : _fields_s_name_value_extensions.pothosDrizzleTotalCount) || s.name.value === '__typename');
67
80
  });
68
81
  });
69
- return (0, _cursors.resolveDrizzleCursorConnection)(tableName, info, typeName, (0, _config.getSchemaConfig)(this.builder), {
70
- ctx: context,
71
- maxSize,
72
- defaultSize,
73
- args,
74
- totalCount: totalCount && (()=>totalCount(parent, args, context, info))
75
- }, (q)=>{
76
- if (totalCountOnly) {
77
- return [];
78
- }
79
- // return checkIfQueryIsUsed(
80
- // this.builder,
81
- // query,
82
- // info,
83
- return resolve(q, parent, args, context, info);
84
- // );
85
- }, parent);
82
+ // Planned before the resolver runs, so the builder it is handed is synchronous even when
83
+ // a selection beneath the connection is async.
84
+ const plan = (0, _mapquery.planFromInfo)({
85
+ config: (0, _config.getSchemaConfig)(this.builder),
86
+ context,
87
+ info,
88
+ paths: [
89
+ [
90
+ 'nodes'
91
+ ],
92
+ [
93
+ 'edges',
94
+ 'node'
95
+ ]
96
+ ],
97
+ typeName
98
+ });
99
+ return (0, _core.isThenable)(plan) ? plan.then((settled)=>resolveConnection(settled, parent, args, context, info, totalCountOnly)) : resolveConnection(plan, parent, args, context, info, totalCountOnly);
86
100
  }
87
101
  }, connectionOptions instanceof _core.ObjectRef ? connectionOptions : {
88
102
  ...connectionOptions,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/field-builder.ts"],"names":["fieldBuilderProto","RootFieldBuilder","prototype","drizzleField","type","resolve","options","modelOrRef","Array","isArray","typeRef","getRefFromModel","builder","typeParam","field","parent","args","context","info","select","queryFromInfo","config","getSchemaConfig","drizzleFieldWithInput","fieldWithInput","drizzleConnection","maxSize","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","totalCount","connectionOptions","edgeOptions","ref","typeName","configStore","getTypeConfig","name","tableName","fieldRef","connection","returnType","fields","isObjectType","isInterfaceType","getFields","selections","fieldNodes","totalCountOnly","every","selection","selectionSet","s","kind","Kind","FIELD","value","extensions","pothosDrizzleTotalCount","resolveDrizzleCursorConnection","ctx","q","ObjectRef","t","int","nullable"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/field-builder.ts"],"names":["fieldBuilderProto","RootFieldBuilder","prototype","refForType","builder","type","modelOrRef","Array","isArray","typeRef","getRefFromModel","planResolver","resolve","run","plan","parent","args","context","info","select","queryFromPlan","planFromInfo","config","getSchemaConfig","isThenable","then","settled","drizzleField","options","field","drizzleFieldWithInput","fieldWithInput","drizzleConnection","maxSize","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","totalCount","connectionOptions","edgeOptions","ref","typeName","configStore","getTypeConfig","name","tableName","resolveConnection","totalCountOnly","resolveDrizzleCursorConnection","ctx","q","fieldRef","connection","returnType","getNamedType","fields","isObjectType","isInterfaceType","getFields","selections","fieldNodes","every","selection","selectionSet","s","kind","Kind","FIELD","value","extensions","pothosDrizzleTotalCount","paths","ObjectRef","t","int","nullable"],"mappings":"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"}