@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
@@ -11,12 +11,12 @@ function _define_property(obj, key, value) {
11
11
  }
12
12
  return obj;
13
13
  }
14
- import { createContextCache } from '@pothos/core';
14
+ import { createContextCache, isThenable } from '@pothos/core';
15
+ import { cacheKey, Plan, setLoaderMappings, setRowFieldMapping } from '@pothos/selection-mapper';
15
16
  import { getColumns, inArray, sql } from 'drizzle-orm';
17
+ import { drizzleAdapter } from './utils/adapter.js';
16
18
  import { getClient, getSchemaConfig } from './utils/config.js';
17
- import { cacheKey, setLoaderMappings } from './utils/loader-map.js';
18
- import { selectionStateFromInfo, stateFromInfo } from './utils/map-query.js';
19
- import { mergeSelection, selectionCompatible, selectionToQuery } from './utils/selections.js';
19
+ import { planFromInfo } from './utils/map-query.js';
20
20
  export class ModelLoader {
21
21
  static forModel(modelName, builder, columns) {
22
22
  return createContextCache((model)=>new ModelLoader(model, builder, modelName, columns));
@@ -33,66 +33,81 @@ export class ModelLoader {
33
33
  }
34
34
  getSelection(info) {
35
35
  const key = cacheKey(info.parentType.name, info.path);
36
- if (!this.queryCache.has(key)) {
37
- const selection = selectionStateFromInfo(this.config, this.context, info);
38
- this.queryCache.set(key, {
39
- selection,
40
- query: selectionToQuery(this.config, selection)
41
- });
36
+ if (!this.rowCache.has(key)) {
37
+ this.rowCache.set(key, Plan.forParentRow(drizzleAdapter(this.config), this.context, info));
42
38
  }
43
- return this.queryCache.get(key);
39
+ return this.rowCache.get(key);
44
40
  }
45
41
  getSelectionForField(info, typeName) {
46
42
  const key = cacheKey(typeName, info.path);
47
- if (!this.queryCache.has(key)) {
48
- const selection = stateFromInfo({
43
+ if (!this.planCache.has(key)) {
44
+ this.planCache.set(key, // Walked without paths, so there is always a plan.
45
+ planFromInfo({
49
46
  config: this.config,
50
47
  context: this.context,
51
48
  info,
52
49
  typeName
53
- });
54
- this.queryCache.set(key, {
55
- selection,
56
- query: selectionToQuery(this.config, selection)
57
- });
50
+ }));
58
51
  }
59
- return this.queryCache.get(key);
52
+ return this.planCache.get(key);
60
53
  }
61
- async loadSelection(info, model) {
62
- const { selection, query } = this.getSelection(info);
63
- const result = await this.stageQuery(selection, query, model);
64
- if (result) {
65
- const mappings = selection.mappings[info.path.key];
66
- if (mappings) {
67
- setLoaderMappings(this.context, info, mappings.mappings);
54
+ /**
55
+ * `model` reloaded with the selection of the field `info` resolves. A synchronous selection
56
+ * stages synchronously, so every row resolved in a tick joins the same batch; only a selection
57
+ * with an async select beneath the field waits for it.
58
+ */ loadSelection(info, model) {
59
+ const selection = this.getSelection(info);
60
+ return isThenable(selection) ? selection.then((settled)=>this.loadWith(settled, info, model)) : this.loadWith(selection, info, model);
61
+ }
62
+ loadWith(played, info, model) {
63
+ return this.stageQuery(played, model).then((result)=>{
64
+ if (result) {
65
+ const mapping = played.mappings[`${info.parentType.name}@${info.path.key}`];
66
+ if (mapping) {
67
+ // Recorded for the field itself too, so its resolver finds the pathInfo it was planned
68
+ // with, along with the mappings of the fields beneath it. Against `result` alone: this
69
+ // load fetched one row, so the field's own mapping is not the whole field's to claim.
70
+ // A sibling row that falls back on a later tick would otherwise read it as proof of
71
+ // having been loaded and resolve against a row that never carried the data.
72
+ setRowFieldMapping(this.context, info, mapping, result);
73
+ }
68
74
  }
69
- }
70
- return result;
75
+ return result;
76
+ });
71
77
  }
72
- async loadSelectionForField(info, model, returnType) {
73
- const { selection, query } = this.getSelectionForField(info, returnType);
74
- const result = await this.stageQuery(selection, query, model);
75
- if (result) {
76
- setLoaderMappings(this.context, info, selection.mappings);
77
- }
78
- return result;
78
+ /** A node loaded by id with the selection beneath the field `info` resolves, as `returnType`. */ loadSelectionForField(info, model, returnType) {
79
+ const selection = this.getSelectionForField(info, returnType);
80
+ return isThenable(selection) ? selection.then((settled)=>this.loadFieldWith(settled.play(), info, model)) : this.loadFieldWith(selection.play(), info, model);
81
+ }
82
+ loadFieldWith(played, info, model) {
83
+ return this.stageQuery(played, model).then((result)=>{
84
+ if (result) {
85
+ // Relay nodes of different types share this field path. Each node plan contributes
86
+ // its type-qualified mappings, as a queryFromInfo plan would.
87
+ setLoaderMappings(this.context, info, played.mappings);
88
+ }
89
+ return result;
90
+ });
79
91
  }
80
- stageQuery(selection, query, model) {
92
+ stageQuery(played, model) {
81
93
  for (const entry of this.staged){
82
- if (selectionCompatible(entry.state, query)) {
83
- mergeSelection(this.config, entry.state, query);
94
+ // Node to node: the batch takes the field's play whole, never through a query.
95
+ if (this.adapter.canMergeNode(entry.root, played.root)) {
96
+ this.adapter.mergeNode(entry.root, played.root);
84
97
  if (!entry.models.has(model)) {
85
98
  entry.models.set(model, createResolvablePromise());
86
99
  }
87
100
  return entry.models.get(model).promise;
88
101
  }
89
102
  }
90
- return this.initLoad(selection, model);
103
+ return this.initLoad(played, model);
91
104
  }
92
- initLoad(selection, model) {
105
+ initLoad(played, model) {
93
106
  const promise = createResolvablePromise();
107
+ const root = this.adapter.createNode(played.root.model);
108
+ this.adapter.mergeNode(root, played.root);
94
109
  const entry = {
95
- state: selection,
110
+ root,
96
111
  models: new Map([
97
112
  [
98
113
  model,
@@ -107,7 +122,7 @@ export class ModelLoader {
107
122
  this.staged.delete(entry);
108
123
  const api = client.query[this.modelName];
109
124
  const query = api.findMany({
110
- ...selectionToQuery(this.config, selection),
125
+ ...this.adapter.toQuery(entry.root),
111
126
  where: {
112
127
  RAW: (table)=>inArray(this.selectSQL(table), [
113
128
  ...entry.models.keys()
@@ -116,9 +131,17 @@ export class ModelLoader {
116
131
  });
117
132
  query.then((results)=>{
118
133
  for (const [model, promise] of entry.models.entries()){
119
- const result = results.find((row)=>this.primaryKey.every((key)=>row[this.config.columnToTsName(key)] === model[this.config.columnToTsName(key)]));
134
+ // Matched on the columns the batch was keyed by, which are the columns a row of
135
+ // `entry.models` carries: a node loaded by a column other than the primary key
136
+ // has only that one.
137
+ const result = results.find((row)=>this.columns.every((key)=>{
138
+ const name = this.config.columnToTsName(key);
139
+ const actual = row[name];
140
+ const expected = model[name];
141
+ return actual === expected || actual instanceof Date && expected instanceof Date && actual.getTime() === expected.getTime();
142
+ }));
120
143
  if (result) {
121
- promise.resolve(result !== null && result !== void 0 ? result : null);
144
+ promise.resolve(result);
122
145
  } else {
123
146
  promise.reject(new Error(`Model ${this.modelName}(${this.sqlForModel(model)}) not found`));
124
147
  }
@@ -140,9 +163,16 @@ export class ModelLoader {
140
163
  _define_property(this, "context", void 0);
141
164
  _define_property(this, "builder", void 0);
142
165
  _define_property(this, "modelName", void 0);
143
- _define_property(this, "queryCache", new Map());
166
+ // One plan per `Type@path`, a promise while a select beneath the field is async. A parent-row
167
+ // plan is played where it is made, since it is never played behind another selection; a field's
168
+ // plan is played per load, so no two loads share a node.
169
+ _define_property(this, "rowCache", new Map());
170
+ _define_property(this, "planCache", new Map());
171
+ // Each batch owns the node it accumulates into, so nothing a cached plan or play holds is
172
+ // changed by a row joining the batch.
144
173
  _define_property(this, "staged", new Set());
145
174
  _define_property(this, "config", void 0);
175
+ _define_property(this, "adapter", void 0);
146
176
  _define_property(this, "table", void 0);
147
177
  _define_property(this, "columns", void 0);
148
178
  _define_property(this, "primaryKey", void 0);
@@ -151,6 +181,7 @@ export class ModelLoader {
151
181
  this.builder = builder;
152
182
  this.modelName = modelName;
153
183
  this.config = getSchemaConfig(builder);
184
+ this.adapter = drizzleAdapter(this.config);
154
185
  this.table = this.config.relations[modelName];
155
186
  this.primaryKey = this.config.getPrimaryKey(modelName);
156
187
  this.columns = columns !== null && columns !== void 0 ? columns : this.primaryKey;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/model-loader.ts"],"names":["createContextCache","getColumns","inArray","sql","getClient","getSchemaConfig","cacheKey","setLoaderMappings","selectionStateFromInfo","stateFromInfo","mergeSelection","selectionCompatible","selectionToQuery","ModelLoader","forModel","modelName","builder","columns","model","sqlForModel","values","map","key","columnName","config","columnToTsName","Error","length","getSelection","info","parentType","name","path","queryCache","has","selection","context","set","query","get","getSelectionForField","typeName","loadSelection","result","stageQuery","mappings","loadSelectionForField","returnType","entry","staged","state","models","createResolvablePromise","promise","initLoad","Map","add","nextTick","client","then","delete","api","findMany","where","RAW","table","selectSQL","keys","results","entries","find","row","primaryKey","every","resolve","reject","err","catch","setTimeout","Set","relations","getPrimaryKey","column","Object","tblColumn","join","getSQL","resolveFn","rejectFn","Promise"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/model-loader.ts"],"names":["createContextCache","isThenable","cacheKey","Plan","setLoaderMappings","setRowFieldMapping","getColumns","inArray","sql","drizzleAdapter","getClient","getSchemaConfig","planFromInfo","ModelLoader","forModel","modelName","builder","columns","model","sqlForModel","values","map","key","columnName","config","columnToTsName","Error","length","getSelection","info","parentType","name","path","rowCache","has","set","forParentRow","context","get","getSelectionForField","typeName","planCache","loadSelection","selection","then","settled","loadWith","played","stageQuery","result","mapping","mappings","loadSelectionForField","returnType","loadFieldWith","play","entry","staged","adapter","canMergeNode","root","mergeNode","models","createResolvablePromise","promise","initLoad","createNode","Map","add","nextTick","client","delete","api","query","findMany","toQuery","where","RAW","table","selectSQL","keys","results","entries","find","row","every","actual","expected","Date","getTime","resolve","reject","err","catch","setTimeout","Set","primaryKey","relations","getPrimaryKey","column","Object","tblColumn","join","getSQL","resolveFn","rejectFn","Promise"],"mappings":"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"}
@@ -8,49 +8,42 @@ import { getSchemaConfig } from './utils/config.js';
8
8
  import { getIDParser, getIDSerializer } from './utils/cursors.js';
9
9
  import { getRefFromModel } from './utils/refs.js';
10
10
  const schemaBuilderProto = SchemaBuilder.prototype;
11
- schemaBuilderProto.drizzleObject = function drizzleObject(table, { select, fields, ...options }) {
11
+ /**
12
+ * The body of `drizzleObject` and `drizzleInterface`. The two build the same ref, extensions and
13
+ * field builder; only the ref class and which of `objectType`/`interfaceType` registers it differ.
14
+ */ function defineDrizzleType(builder, table, { select, fields, ...options }, kind) {
12
15
  var _ref, _options_variant;
16
+ const isInterface = kind === 'Interface';
13
17
  const name = (_ref = (_options_variant = options.variant) !== null && _options_variant !== void 0 ? _options_variant : options.name) !== null && _ref !== void 0 ? _ref : table;
14
- const ref = options.variant ? new DrizzleObjectRef(options.variant, table) : getRefFromModel(table, this, 'object');
18
+ const ref = options.variant ? isInterface ? new DrizzleInterfaceRef(options.variant, table) : new DrizzleObjectRef(options.variant, table) : getRefFromModel(table, builder, isInterface ? 'interface' : 'object');
15
19
  ref.name = name;
16
- this.objectType(ref, {
20
+ const config = {
17
21
  ...options,
18
22
  extensions: {
19
23
  ...options.extensions,
20
24
  pothosDrizzleModel: table,
21
- pothosDrizzleTable: getSchemaConfig(this).relations[table],
25
+ pothosDrizzleTable: getSchemaConfig(builder).relations[table],
22
26
  pothosDrizzleSelect: typeof select === 'object' ? {
23
27
  columns: {},
24
28
  ...select
25
29
  } : select !== null && select !== void 0 ? select : true,
26
- pothosDrizzleLoader: ModelLoader.forModel(table, this)
30
+ pothosDrizzleLoader: ModelLoader.forModel(table, builder)
27
31
  },
28
32
  name,
29
- fields: fields ? ()=>fields(new DrizzleObjectFieldBuilder(ref.name, this, table)) : undefined
30
- });
33
+ fields: fields ? ()=>fields(new DrizzleObjectFieldBuilder(name, builder, table, kind)) : undefined
34
+ };
35
+ if (isInterface) {
36
+ builder.interfaceType(ref, config);
37
+ } else {
38
+ builder.objectType(ref, config);
39
+ }
31
40
  return ref;
41
+ }
42
+ schemaBuilderProto.drizzleObject = function drizzleObject(table, options) {
43
+ return defineDrizzleType(this, table, options, 'Object');
32
44
  };
33
- schemaBuilderProto.drizzleInterface = function drizzleInterface(table, { select, fields, ...options }) {
34
- var _ref, _options_variant;
35
- const name = (_ref = (_options_variant = options.variant) !== null && _options_variant !== void 0 ? _options_variant : options.name) !== null && _ref !== void 0 ? _ref : table;
36
- const ref = options.variant ? new DrizzleInterfaceRef(options.variant, table) : getRefFromModel(table, this, 'interface');
37
- ref.name = name;
38
- this.interfaceType(ref, {
39
- ...options,
40
- extensions: {
41
- ...options.extensions,
42
- pothosDrizzleModel: table,
43
- pothosDrizzleTable: getSchemaConfig(this).relations[table],
44
- pothosDrizzleSelect: typeof select === 'object' ? {
45
- columns: {},
46
- ...select
47
- } : select !== null && select !== void 0 ? select : true,
48
- pothosDrizzleLoader: ModelLoader.forModel(table, this)
49
- },
50
- name,
51
- fields: fields ? ()=>fields(new DrizzleObjectFieldBuilder(ref.name, this, table, 'Interface')) : undefined
52
- });
53
- return ref;
45
+ schemaBuilderProto.drizzleInterface = function drizzleInterface(table, options) {
46
+ return defineDrizzleType(this, table, options, 'Interface');
54
47
  };
55
48
  schemaBuilderProto.drizzleNode = function drizzleNode(table, { id: { column, ...idOptions }, name, variant, ...options }) {
56
49
  var _ref;
@@ -63,7 +56,7 @@ schemaBuilderProto.drizzleNode = function drizzleNode(table, { id: { column, ...
63
56
  ];
64
57
  const interfaceRef = (_this_nodeInterfaceRef = (_this = this).nodeInterfaceRef) === null || _this_nodeInterfaceRef === void 0 ? void 0 : _this_nodeInterfaceRef.call(_this);
65
58
  const resolve = getIDSerializer(idColumns, schemaConfig);
66
- const idParser = getIDParser(idColumns);
59
+ const idParser = getIDParser(idColumns, schemaConfig);
67
60
  const typeName = (_ref = variant !== null && variant !== void 0 ? variant : name) !== null && _ref !== void 0 ? _ref : table;
68
61
  const nodeRef = new DrizzleNodeRef(typeName, table, {
69
62
  parseId: (id)=>{
@@ -117,132 +110,30 @@ schemaBuilderProto.drizzleNode = function drizzleNode(table, { id: { column, ...
117
110
  this.configStore.associateParamWithRef(nodeRef, ref);
118
111
  return nodeRef;
119
112
  };
120
- schemaBuilderProto.drizzleObjectField = function drizzleObjectField(type, fieldName, field) {
121
- const ref = typeof type === 'string' ? getRefFromModel(type, this) : type;
122
- this.configStore.onTypeConfig(ref, ({ name })=>{
123
- this.configStore.addFields(ref, ()=>({
124
- [fieldName]: field(new DrizzleObjectFieldBuilder(name, this, ref.tableName))
125
- }));
113
+ /**
114
+ * The body of `drizzleObjectField(s)` and `drizzleInterfaceField(s)`: they differ only in kind.
115
+ * A table name names the interface registered under it, as `drizzleInterface` registers one.
116
+ */ function addDrizzleFields(builder, type, fields, graphqlKind) {
117
+ const ref = typeof type === 'string' ? getRefFromModel(type, builder, graphqlKind ? 'interface' : 'object') : type;
118
+ builder.configStore.onTypeConfig(ref, ({ name })=>{
119
+ builder.configStore.addFields(ref, ()=>fields(new DrizzleObjectFieldBuilder(name, builder, ref.tableName, graphqlKind)));
126
120
  });
121
+ }
122
+ schemaBuilderProto.drizzleObjectField = function drizzleObjectField(type, fieldName, field) {
123
+ addDrizzleFields(this, type, (t)=>({
124
+ [fieldName]: field(t)
125
+ }));
127
126
  };
128
127
  schemaBuilderProto.drizzleInterfaceField = function drizzleInterfaceField(type, fieldName, field) {
129
- const ref = typeof type === 'string' ? getRefFromModel(type, this) : type;
130
- this.configStore.onTypeConfig(ref, ({ name })=>{
131
- this.configStore.addFields(ref, ()=>({
132
- [fieldName]: field(new DrizzleObjectFieldBuilder(name, this, ref.tableName, 'Interface'))
133
- }));
134
- });
128
+ addDrizzleFields(this, type, (t)=>({
129
+ [fieldName]: field(t)
130
+ }), 'Interface');
135
131
  };
136
132
  schemaBuilderProto.drizzleObjectFields = function drizzleObjectFields(type, fields) {
137
- const ref = typeof type === 'string' ? getRefFromModel(type, this) : type;
138
- this.configStore.onTypeConfig(ref, ({ name })=>{
139
- this.configStore.addFields(ref, ()=>fields(new DrizzleObjectFieldBuilder(name, this, ref.tableName)));
140
- });
133
+ addDrizzleFields(this, type, fields);
141
134
  };
142
135
  schemaBuilderProto.drizzleInterfaceFields = function drizzleInterfaceFields(type, fields) {
143
- const ref = typeof type === 'string' ? getRefFromModel(type, this) : type;
144
- this.configStore.onTypeConfig(ref, ({ name })=>{
145
- this.configStore.addFields(ref, ()=>fields(new DrizzleObjectFieldBuilder(name, this, ref.tableName, 'Interface')));
146
- });
147
- }; // schemaBuilderProto.drizzleGraphQLOrderBy = function drizzleGraphQLOrderBy(
148
- // this: PothosSchemaTypes.SchemaBuilder<SchemaTypes>,
149
- // table: string,
150
- // type: GraphQLInputObjectType,
151
- // options?: { extensions?: object },
152
- // ) {
153
- // return (
154
- // this as typeof this & {
155
- // addGraphQLInput: (
156
- // type: GraphQLInputObjectType,
157
- // options: Record<string, unknown>,
158
- // ) => InputObjectRef<SchemaTypes, {}>;
159
- // }
160
- // ).addGraphQLInput(type, {
161
- // ...options,
162
- // extensions: {
163
- // ...options?.extensions,
164
- // drizzleGraphQL: {
165
- // inputType: 'orderBy',
166
- // table,
167
- // tableConfig: getSchemaConfig(this).relations[table],
168
- // } satisfies DrizzleGraphQLInputExtensions,
169
- // },
170
- // });
171
- // } as never;
172
- // schemaBuilderProto.drizzleGraphQLFilters = function drizzleGraphQLFilters(
173
- // this: PothosSchemaTypes.SchemaBuilder<SchemaTypes>,
174
- // table: string,
175
- // type: GraphQLInputObjectType,
176
- // options?: { extensions?: object },
177
- // ) {
178
- // return (
179
- // this as typeof this & {
180
- // addGraphQLInput: (
181
- // type: GraphQLInputObjectType,
182
- // options: Record<string, unknown>,
183
- // ) => InputObjectRef<SchemaTypes, {}>;
184
- // }
185
- // ).addGraphQLInput(type, {
186
- // ...options,
187
- // extensions: {
188
- // ...options?.extensions,
189
- // drizzleGraphQL: {
190
- // inputType: 'filters',
191
- // table,
192
- // tableConfig: getSchemaConfig(this).relations[table],
193
- // } satisfies DrizzleGraphQLInputExtensions,
194
- // },
195
- // });
196
- // } as never;
197
- // schemaBuilderProto.drizzleGraphQLInsert = function drizzleGraphQLInsert(
198
- // this: PothosSchemaTypes.SchemaBuilder<SchemaTypes>,
199
- // table: string,
200
- // type: GraphQLInputObjectType,
201
- // options?: { extensions?: object },
202
- // ) {
203
- // return (
204
- // this as typeof this & {
205
- // addGraphQLInput: (
206
- // type: GraphQLInputObjectType,
207
- // options: Record<string, unknown>,
208
- // ) => InputObjectRef<SchemaTypes, {}>;
209
- // }
210
- // ).addGraphQLInput(type, {
211
- // ...options,
212
- // extensions: {
213
- // ...options?.extensions,
214
- // drizzleGraphQL: {
215
- // inputType: 'insert',
216
- // table,
217
- // tableConfig: getSchemaConfig(this).relations[table],
218
- // } satisfies DrizzleGraphQLInputExtensions,
219
- // },
220
- // });
221
- // } as never;
222
- // schemaBuilderProto.drizzleGraphQLUpdate = function drizzleGraphQLUpdate(
223
- // this: PothosSchemaTypes.SchemaBuilder<SchemaTypes>,
224
- // table: string,
225
- // type: GraphQLInputObjectType,
226
- // options?: { extensions?: object },
227
- // ) {
228
- // return (
229
- // this as typeof this & {
230
- // addGraphQLInput: (
231
- // type: GraphQLInputObjectType,
232
- // options: Record<string, unknown>,
233
- // ) => InputObjectRef<SchemaTypes, {}>;
234
- // }
235
- // ).addGraphQLInput(type, {
236
- // ...options,
237
- // extensions: {
238
- // ...options?.extensions,
239
- // drizzleGraphQL: {
240
- // inputType: 'update',
241
- // table,
242
- // tableConfig: getSchemaConfig(this).relations[table],
243
- // } satisfies DrizzleGraphQLInputExtensions,
244
- // },
245
- // });
246
- // } as never;
136
+ addDrizzleFields(this, type, fields, 'Interface');
137
+ };
247
138
 
248
139
  //# sourceMappingURL=schema-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema-builder.ts"],"names":["SchemaBuilder","brandWithType","completeValue","PothosError","DrizzleObjectFieldBuilder","DrizzleInterfaceRef","ModelLoader","DrizzleNodeRef","DrizzleObjectRef","getSchemaConfig","getIDParser","getIDSerializer","getRefFromModel","schemaBuilderProto","prototype","drizzleObject","table","select","fields","options","name","variant","ref","objectType","extensions","pothosDrizzleModel","pothosDrizzleTable","relations","pothosDrizzleSelect","columns","pothosDrizzleLoader","forModel","undefined","drizzleInterface","interfaceType","drizzleNode","id","column","idOptions","schemaConfig","tableConfig","idColumn","idColumns","Array","isArray","interfaceRef","nodeInterfaceRef","resolve","idParser","typeName","nodeRef","parseId","parsed","columnToTsName","modelLoader","extendedOptions","interfaces","loadWithoutCache","context","info","record","loadSelectionForField","addInterfaces","configStore","onTypeConfig","nodeConfig","objectField","relay","idFieldName","t","globalID","idFieldOptions","nullable","args","parent","type","associateParamWithRef","drizzleObjectField","fieldName","field","addFields","tableName","drizzleInterfaceField","drizzleObjectFields","drizzleInterfaceFields"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/schema-builder.ts"],"names":["SchemaBuilder","brandWithType","completeValue","PothosError","DrizzleObjectFieldBuilder","DrizzleInterfaceRef","ModelLoader","DrizzleNodeRef","DrizzleObjectRef","getSchemaConfig","getIDParser","getIDSerializer","getRefFromModel","schemaBuilderProto","prototype","defineDrizzleType","builder","table","select","fields","options","kind","isInterface","name","variant","ref","config","extensions","pothosDrizzleModel","pothosDrizzleTable","relations","pothosDrizzleSelect","columns","pothosDrizzleLoader","forModel","undefined","interfaceType","objectType","drizzleObject","drizzleInterface","drizzleNode","id","column","idOptions","schemaConfig","tableConfig","idColumn","idColumns","Array","isArray","interfaceRef","nodeInterfaceRef","resolve","idParser","typeName","nodeRef","parseId","parsed","columnToTsName","modelLoader","extendedOptions","interfaces","loadWithoutCache","context","info","record","loadSelectionForField","addInterfaces","configStore","onTypeConfig","nodeConfig","objectField","relay","idFieldName","t","globalID","idFieldOptions","nullable","args","parent","type","associateParamWithRef","addDrizzleFields","graphqlKind","addFields","tableName","drizzleObjectField","fieldName","field","drizzleInterfaceField","drizzleObjectFields","drizzleInterfaceFields"],"mappings":"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"}