@pothos/plugin-drizzle 0.3.0 → 0.4.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 (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dts/drizzle-field-builder.d.ts +2 -1
  3. package/dts/drizzle-field-builder.d.ts.map +1 -1
  4. package/dts/global-types.d.ts +8 -2
  5. package/dts/global-types.d.ts.map +1 -1
  6. package/dts/node-ref.d.ts +7 -1
  7. package/dts/node-ref.d.ts.map +1 -1
  8. package/dts/types.d.ts +3 -3
  9. package/dts/types.d.ts.map +1 -1
  10. package/dts/utils/cursors.d.ts +4 -1
  11. package/dts/utils/cursors.d.ts.map +1 -1
  12. package/esm/drizzle-field-builder.d.ts +2 -1
  13. package/esm/drizzle-field-builder.d.ts.map +1 -1
  14. package/esm/drizzle-field-builder.js +1 -1
  15. package/esm/drizzle-field-builder.js.map +1 -1
  16. package/esm/global-types.d.ts +8 -2
  17. package/esm/global-types.d.ts.map +1 -1
  18. package/esm/global-types.js.map +1 -1
  19. package/esm/node-ref.d.ts +7 -1
  20. package/esm/node-ref.d.ts.map +1 -1
  21. package/esm/node-ref.js +22 -0
  22. package/esm/node-ref.js.map +1 -1
  23. package/esm/schema-builder.js +6 -4
  24. package/esm/schema-builder.js.map +1 -1
  25. package/esm/types.d.ts +3 -3
  26. package/esm/types.d.ts.map +1 -1
  27. package/esm/utils/cursors.d.ts +4 -1
  28. package/esm/utils/cursors.d.ts.map +1 -1
  29. package/esm/utils/cursors.js +80 -22
  30. package/esm/utils/cursors.js.map +1 -1
  31. package/lib/drizzle-field-builder.js +1 -1
  32. package/lib/drizzle-field-builder.js.map +1 -1
  33. package/lib/node-ref.js +32 -3
  34. package/lib/node-ref.js.map +1 -1
  35. package/lib/schema-builder.js +5 -3
  36. package/lib/schema-builder.js.map +1 -1
  37. package/lib/utils/cursors.js +90 -25
  38. package/lib/utils/cursors.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/drizzle-field-builder.ts +5 -5
  41. package/src/global-types.ts +11 -2
  42. package/src/node-ref.ts +18 -1
  43. package/src/schema-builder.ts +15 -5
  44. package/src/types.ts +5 -4
  45. package/src/utils/cursors.ts +98 -22
@@ -18,6 +18,9 @@ _export(exports, {
18
18
  formatDrizzleCursor: function() {
19
19
  return formatDrizzleCursor;
20
20
  },
21
+ formatIDChunk: function() {
22
+ return formatIDChunk;
23
+ },
21
24
  getColumnParser: function() {
22
25
  return getColumnParser;
23
26
  },
@@ -30,15 +33,21 @@ _export(exports, {
30
33
  getCursorParser: function() {
31
34
  return getCursorParser;
32
35
  },
36
+ getIDParser: function() {
37
+ return getIDParser;
38
+ },
39
+ getIDSerializer: function() {
40
+ return getIDSerializer;
41
+ },
33
42
  parseDrizzleCursor: function() {
34
43
  return parseDrizzleCursor;
35
44
  },
36
- parseID: function() {
37
- return parseID;
38
- },
39
45
  parseSerializedDrizzleColumn: function() {
40
46
  return parseSerializedDrizzleColumn;
41
47
  },
48
+ parseSerializedIDColumn: function() {
49
+ return parseSerializedIDColumn;
50
+ },
42
51
  resolveDrizzleCursorConnection: function() {
43
52
  return resolveDrizzleCursorConnection;
44
53
  },
@@ -69,6 +78,30 @@ function formatCursorChunk(value) {
69
78
  function formatDrizzleCursor(record, fields) {
70
79
  return getCursorFormatter(fields)(record);
71
80
  }
81
+ function formatIDChunk(value) {
82
+ if (value instanceof Date) {
83
+ return `${String(Number(value))}`;
84
+ }
85
+ switch(typeof value){
86
+ case 'number':
87
+ case 'string':
88
+ case 'bigint':
89
+ return `${value}`;
90
+ default:
91
+ throw new _core.PothosValidationError(`Unsupported ID type ${typeof value}`);
92
+ }
93
+ }
94
+ function getIDSerializer(fields) {
95
+ if (fields.length === 0) {
96
+ throw new _core.PothosValidationError('Column serializer must have at least one field');
97
+ }
98
+ return (value)=>{
99
+ if (fields.length > 1) {
100
+ return `${JSON.stringify(fields.map((col)=>value[col.name]))}`;
101
+ }
102
+ return `${formatIDChunk(value[fields[0].name])}`;
103
+ };
104
+ }
72
105
  function getColumnSerializer(fields) {
73
106
  if (fields.length === 0) {
74
107
  throw new _core.PothosValidationError('Column serializer must have at least one field');
@@ -127,32 +160,61 @@ function parseSerializedDrizzleColumn(value) {
127
160
  throw new _core.PothosValidationError(`Invalid serialized data: ${value}`);
128
161
  }
129
162
  }
130
- function parseID(id, dataType) {
163
+ function parseSerializedIDColumn(id, field) {
131
164
  if (!id) {
132
165
  return id;
133
166
  }
134
- switch(dataType){
135
- case 'String':
136
- return id;
137
- case 'Int':
138
- return Number.parseInt(id, 10);
139
- case 'BigInt':
140
- return BigInt(id);
141
- case 'Boolean':
142
- return id !== 'false';
143
- case 'Float':
144
- case 'Decimal':
145
- return Number.parseFloat(id);
146
- case 'DateTime':
147
- return new Date(id);
148
- case 'Json':
149
- return JSON.parse(id);
150
- case 'Byte':
151
- return Buffer.from(id, 'base64');
152
- default:
153
- return id;
167
+ try {
168
+ switch(field.dataType){
169
+ case 'date':
170
+ return new Date(id);
171
+ case 'string':
172
+ return id;
173
+ case 'number':
174
+ return Number.parseInt(id, 10);
175
+ case 'bigint':
176
+ return BigInt(id);
177
+ default:
178
+ throw new _core.PothosValidationError(`Unsupported ID type ${field.dataType}`);
179
+ }
180
+ } catch (error) {
181
+ if (error instanceof _core.PothosValidationError) {
182
+ throw error;
183
+ }
184
+ throw new _core.PothosValidationError(`Invalid serialized ID: ${id}`);
154
185
  }
155
186
  }
187
+ function getIDParser(fields) {
188
+ if (fields.length === 0) {
189
+ throw new _core.PothosValidationError('Column parser must have at least one field');
190
+ }
191
+ return (value)=>{
192
+ if (fields.length === 1) {
193
+ return {
194
+ [fields[0].name]: parseSerializedIDColumn(value, fields[0])
195
+ };
196
+ }
197
+ try {
198
+ const parsed = JSON.parse(value);
199
+ if (!Array.isArray(parsed)) {
200
+ throw new _core.PothosValidationError(`Expected compound ID to contain an array, but got ${value}`);
201
+ }
202
+ if (parsed.length !== fields.length) {
203
+ throw new _core.PothosValidationError(`Expected compound ID to contain ${fields.length} elements, but got ${parsed.length}`);
204
+ }
205
+ const record = {};
206
+ fields.forEach((field, i)=>{
207
+ record[field.name] = parsed[i];
208
+ });
209
+ return record;
210
+ } catch (error) {
211
+ if (error instanceof _core.PothosValidationError) {
212
+ throw error;
213
+ }
214
+ throw new _core.PothosValidationError(`Invalid serialized ID: ${value}`);
215
+ }
216
+ };
217
+ }
156
218
  function getColumnParser(fields) {
157
219
  if (fields.length === 0) {
158
220
  throw new _core.PothosValidationError('Column parser must have at least one field');
@@ -167,6 +229,9 @@ function getColumnParser(fields) {
167
229
  if (!Array.isArray(parsed)) {
168
230
  throw new _core.PothosValidationError(`Expected compound cursor to contain an array, but got ${parsed}`);
169
231
  }
232
+ if (parsed.length !== fields.length) {
233
+ throw new _core.PothosValidationError(`Expected compound cursor to contain ${fields.length} elements, but got ${parsed.length}`);
234
+ }
170
235
  const record = {};
171
236
  fields.forEach((field, i)=>{
172
237
  record[field.name] = parsed[i];
@@ -322,7 +387,7 @@ function wrapConnectionResult(results, args, limit, cursor, resolveNode) {
322
387
  async function resolveDrizzleCursorConnection(table, info, typeName, config, options, resolve) {
323
388
  let query;
324
389
  let formatter;
325
- const results = await resolve((q)=>{
390
+ const results = await resolve((q = {})=>{
326
391
  const { cursorColumns, ...connectionQuery } = drizzleCursorConnectionQuery({
327
392
  ...options,
328
393
  orderBy: q.orderBy ? typeof q.orderBy === 'function' ? q.orderBy(table.columns) : q.orderBy : table.primaryKey
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/cursors.ts"],"names":["drizzleCursorConnectionQuery","formatCursorChunk","formatDrizzleCursor","getColumnParser","getColumnSerializer","getCursorFormatter","getCursorParser","parseDrizzleCursor","parseID","parseSerializedDrizzleColumn","resolveDrizzleCursorConnection","wrapConnectionResult","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","PothosValidationError","record","fields","length","JSON","stringify","map","col","name","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","dataType","parseFloat","Buffer","from","parsed","Array","isArray","forEach","field","i","orderByOps","getOrderByOperators","parseOrderBy","orderBy","invert","asc","desc","normalized","direction","column","columns","sql","ops","getOperators","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","parsedOrderBy","whereClauses","cursorParser","parsedCursor","push","or","index","compare","gt","lt","and","c","eq","cursorColumns","offset","results","resolveNode","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","table","info","typeName","config","options","resolve","query","formatter","q","connectionQuery","primaryKey","queryFromInfo","context","select","paths"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/cursors.ts"],"names":["drizzleCursorConnectionQuery","formatCursorChunk","formatDrizzleCursor","formatIDChunk","getColumnParser","getColumnSerializer","getCursorFormatter","getCursorParser","getIDParser","getIDSerializer","parseDrizzleCursor","parseSerializedDrizzleColumn","parseSerializedIDColumn","resolveDrizzleCursorConnection","wrapConnectionResult","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","PothosValidationError","record","fields","length","JSON","stringify","map","col","name","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","field","dataType","error","parsed","Array","isArray","forEach","i","orderByOps","getOrderByOperators","parseOrderBy","orderBy","invert","asc","desc","normalized","direction","column","columns","sql","ops","getOperators","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","parsedOrderBy","whereClauses","cursorParser","parsedCursor","push","or","index","compare","gt","lt","and","c","eq","cursorColumns","offset","results","resolveNode","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","table","info","typeName","config","options","resolve","query","formatter","q","connectionQuery","primaryKey","queryFromInfo","context","select","paths"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pothos/plugin-drizzle",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "A Pothos plugin for drizzle",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./dts/index.d.ts",
@@ -46,7 +46,7 @@
46
46
  "graphql-scalars": "^1.23.0",
47
47
  "graphql-tag": "^2.12.6",
48
48
  "postgres": "^3.4.4",
49
- "@pothos/core": "4.1.0",
49
+ "@pothos/core": "4.2.0",
50
50
  "@pothos/plugin-add-graphql": "4.1.0",
51
51
  "@pothos/plugin-relay": "4.1.0",
52
52
  "@pothos/plugin-scope-auth": "4.1.0",
@@ -91,9 +91,9 @@ export class DrizzleObjectFieldBuilder<
91
91
  EdgeInterfaces extends InterfaceParam<Types>[] = [],
92
92
  >(
93
93
  field: Field,
94
- options: RelatedConnectionOptions<Types, Shape, TableConfig, Field, Nullable, Args>,
95
94
  ...args: NormalizeArgs<
96
95
  [
96
+ options: RelatedConnectionOptions<Types, Shape, TableConfig, Field, Nullable, Args>,
97
97
  connectionOptions:
98
98
  | ObjectRef<
99
99
  Types,
@@ -182,17 +182,17 @@ export class DrizzleObjectFieldBuilder<
182
182
  type?: ObjectRef<Types, unknown, unknown>;
183
183
  maxSize?: number | ((args: {}, ctx: {}) => number);
184
184
  defaultSize?: number | ((args: {}, ctx: {}) => number);
185
- extensions: {};
185
+ extensions?: {};
186
186
  description?: string;
187
- query: ((args: {}, ctx: {}) => {}) | {};
188
- resolve: (
187
+ query?: ((args: {}, ctx: {}) => {}) | {};
188
+ resolve?: (
189
189
  query: {},
190
190
  parent: unknown,
191
191
  args: {},
192
192
  ctx: {},
193
193
  info: {},
194
194
  ) => MaybePromise<readonly {}[]>;
195
- },
195
+ } = {},
196
196
  connectionOptions = {},
197
197
  edgeOptions = {},
198
198
  ) {
@@ -14,6 +14,7 @@ import type {
14
14
  } from '@pothos/core';
15
15
  import type {
16
16
  BuildQueryResult,
17
+ Column,
17
18
  DBQueryConfig,
18
19
  ExtractTablesWithRelations,
19
20
  SQL,
@@ -116,6 +117,7 @@ declare global {
116
117
  Types['DrizzleRelationSchema'][Table]
117
118
  >
118
119
  | true,
120
+ IDColumn extends Column,
119
121
  Shape = BuildQueryResult<
120
122
  Types['DrizzleRelationSchema'],
121
123
  Types['DrizzleRelationSchema'][Table],
@@ -123,8 +125,15 @@ declare global {
123
125
  >,
124
126
  >(
125
127
  table: Table,
126
- options: DrizzleNodeOptions<Types, Table, Shape, Selection, Interfaces>,
127
- ) => DrizzleNodeRef<Types, Table, Shape>
128
+ options: DrizzleNodeOptions<Types, Table, Shape, Selection, Interfaces, IDColumn>,
129
+ ) => DrizzleNodeRef<
130
+ Types,
131
+ Table,
132
+ Shape,
133
+ {
134
+ [K in IDColumn['_']['name']]: Extract<IDColumn, { _: { name: K } }>['_']['data'];
135
+ }
136
+ >
128
137
  : '@pothos/plugin-relay is required to use this method';
129
138
 
130
139
  drizzleObjectField: <
package/src/node-ref.ts CHANGED
@@ -1,8 +1,25 @@
1
1
  import type { SchemaTypes } from '@pothos/core';
2
2
  import { DrizzleObjectRef } from './object-ref';
3
3
 
4
+ export const relayIDShapeKey = Symbol.for('Pothos.relayIDShapeKey');
5
+
4
6
  export class DrizzleNodeRef<
5
7
  Types extends SchemaTypes,
6
8
  Table extends keyof Types['DrizzleRelationSchema'] = keyof Types['DrizzleRelationSchema'],
7
9
  T = {},
8
- > extends DrizzleObjectRef<Types, Table, T> {}
10
+ IDShape = string,
11
+ > extends DrizzleObjectRef<Types, Table, T> {
12
+ [relayIDShapeKey]!: IDShape;
13
+ parseId: ((id: string, ctx: object) => IDShape) | undefined;
14
+
15
+ constructor(
16
+ name: string,
17
+ tableName: string,
18
+ options: {
19
+ parseId?: (id: string, ctx: object) => IDShape;
20
+ },
21
+ ) {
22
+ super(name, tableName);
23
+ this.parseId = options.parseId;
24
+ }
25
+ }
@@ -9,6 +9,7 @@ import SchemaBuilder, {
9
9
  type FieldRef,
10
10
  type InputObjectRef,
11
11
  } from '@pothos/core';
12
+ import type { Column } from 'drizzle-orm';
12
13
  import type { GraphQLInputObjectType, GraphQLResolveInfo } from 'graphql';
13
14
  import { DrizzleObjectFieldBuilder } from './drizzle-field-builder';
14
15
  import { DrizzleInterfaceRef } from './interface-ref';
@@ -17,7 +18,7 @@ import { DrizzleNodeRef } from './node-ref';
17
18
  import { DrizzleObjectRef } from './object-ref';
18
19
  import type { DrizzleGraphQLInputExtensions, DrizzleNodeOptions } from './types';
19
20
  import { getSchemaConfig } from './utils/config';
20
- import { getColumnParser, getColumnSerializer } from './utils/cursors';
21
+ import { getIDParser, getIDSerializer } from './utils/cursors';
21
22
  import { getRefFromModel } from './utils/refs';
22
23
 
23
24
  const schemaBuilderProto = SchemaBuilder.prototype as PothosSchemaTypes.SchemaBuilder<SchemaTypes>;
@@ -87,16 +88,25 @@ schemaBuilderProto.drizzleNode = function drizzleNode(
87
88
  name,
88
89
  variant,
89
90
  ...options
90
- }: DrizzleNodeOptions<SchemaTypes, keyof SchemaTypes['DrizzleRelationSchema'], {}, {}, []>,
91
+ }: DrizzleNodeOptions<
92
+ SchemaTypes,
93
+ keyof SchemaTypes['DrizzleRelationSchema'],
94
+ {},
95
+ {},
96
+ [],
97
+ Column
98
+ >,
91
99
  ) {
92
100
  const tableConfig = getSchemaConfig(this).schema![table];
93
101
  const idColumn = typeof column === 'function' ? column(tableConfig.columns) : column;
94
102
  const idColumns = Array.isArray(idColumn) ? idColumn : [idColumn];
95
103
  const interfaceRef = this.nodeInterfaceRef?.();
96
- const resolve = getColumnSerializer(idColumns);
97
- const idParser = getColumnParser(idColumns);
104
+ const resolve = getIDSerializer(idColumns);
105
+ const idParser = getIDParser(idColumns);
98
106
  const typeName = variant ?? name ?? table;
99
- const nodeRef = new DrizzleNodeRef(typeName, table);
107
+ const nodeRef = new DrizzleNodeRef(typeName, table, {
108
+ parseId: idParser,
109
+ });
100
110
  const modelLoader = ModelLoader.forModel(table, this, idColumns);
101
111
 
102
112
  if (!interfaceRef) {
package/src/types.ts CHANGED
@@ -119,6 +119,7 @@ export type DrizzleNodeOptions<
119
119
  Shape,
120
120
  Selection,
121
121
  Interfaces extends InterfaceParam<Types>[],
122
+ IDColumn extends Column,
122
123
  > = NameOrVariant &
123
124
  Omit<
124
125
  | PothosSchemaTypes.ObjectTypeOptions<Types, Shape>
@@ -139,9 +140,9 @@ export type DrizzleNodeOptions<
139
140
  'args' | 'nullable' | 'type' | InferredFieldOptionKeys
140
141
  > & {
141
142
  column:
142
- | Column
143
- | Column[]
144
- | ((columns: Types['DrizzleRelationSchema'][Table]['columns']) => Column | Column[]);
143
+ | IDColumn
144
+ | IDColumn[]
145
+ | ((columns: Types['DrizzleRelationSchema'][Table]['columns']) => IDColumn | IDColumn[]);
145
146
  };
146
147
  name: string;
147
148
  select?: Selection;
@@ -588,7 +589,7 @@ export type RelatedConnectionOptions<
588
589
  Nullable
589
590
  >
590
591
  >;
591
- query: QueryForRelatedConnection<Types, NodeTable, ConnectionArgs>;
592
+ query?: QueryForRelatedConnection<Types, NodeTable, ConnectionArgs>;
592
593
  // biome-ignore lint/suspicious/noExplicitAny: <explanation>
593
594
  type?: DrizzleRef<any, Table['relations'][Field]['referencedTable']['_']['name']>;
594
595
 
@@ -43,6 +43,35 @@ export function formatDrizzleCursor(record: Record<string, unknown>, fields: Col
43
43
  return getCursorFormatter(fields)(record);
44
44
  }
45
45
 
46
+ export function formatIDChunk(value: unknown) {
47
+ if (value instanceof Date) {
48
+ return `${String(Number(value))}`;
49
+ }
50
+
51
+ switch (typeof value) {
52
+ case 'number':
53
+ case 'string':
54
+ case 'bigint':
55
+ return `${value}`;
56
+ default:
57
+ throw new PothosValidationError(`Unsupported ID type ${typeof value}`);
58
+ }
59
+ }
60
+
61
+ export function getIDSerializer(fields: Column[]) {
62
+ if (fields.length === 0) {
63
+ throw new PothosValidationError('Column serializer must have at least one field');
64
+ }
65
+
66
+ return (value: Record<string, unknown>) => {
67
+ if (fields.length > 1) {
68
+ return `${JSON.stringify(fields.map((col) => value[col.name]))}`;
69
+ }
70
+
71
+ return `${formatIDChunk(value[fields[0].name])}`;
72
+ };
73
+ }
74
+
46
75
  export function getColumnSerializer(fields: Column[]) {
47
76
  if (fields.length === 0) {
48
77
  throw new PothosValidationError('Column serializer must have at least one field');
@@ -113,32 +142,73 @@ export function parseSerializedDrizzleColumn(value: unknown) {
113
142
  }
114
143
  }
115
144
 
116
- export function parseID(id: string, dataType: string): unknown {
145
+ export function parseSerializedIDColumn(id: string, field: Column): unknown {
117
146
  if (!id) {
118
147
  return id;
119
148
  }
120
149
 
121
- switch (dataType) {
122
- case 'String':
123
- return id;
124
- case 'Int':
125
- return Number.parseInt(id, 10);
126
- case 'BigInt':
127
- return BigInt(id);
128
- case 'Boolean':
129
- return id !== 'false';
130
- case 'Float':
131
- case 'Decimal':
132
- return Number.parseFloat(id);
133
- case 'DateTime':
134
- return new Date(id);
135
- case 'Json':
136
- return JSON.parse(id) as unknown;
137
- case 'Byte':
138
- return Buffer.from(id, 'base64');
139
- default:
140
- return id;
150
+ try {
151
+ switch (field.dataType) {
152
+ case 'date':
153
+ return new Date(id);
154
+ case 'string':
155
+ return id;
156
+ case 'number':
157
+ return Number.parseInt(id, 10);
158
+ case 'bigint':
159
+ return BigInt(id);
160
+ default:
161
+ throw new PothosValidationError(`Unsupported ID type ${field.dataType}`);
162
+ }
163
+ } catch (error: unknown) {
164
+ if (error instanceof PothosValidationError) {
165
+ throw error;
166
+ }
167
+
168
+ throw new PothosValidationError(`Invalid serialized ID: ${id}`);
169
+ }
170
+ }
171
+
172
+ export function getIDParser(fields: readonly Column[]) {
173
+ if (fields.length === 0) {
174
+ throw new PothosValidationError('Column parser must have at least one field');
141
175
  }
176
+
177
+ return (value: string) => {
178
+ if (fields.length === 1) {
179
+ return { [fields[0].name]: parseSerializedIDColumn(value, fields[0]) };
180
+ }
181
+
182
+ try {
183
+ const parsed = JSON.parse(value) as unknown[];
184
+
185
+ if (!Array.isArray(parsed)) {
186
+ throw new PothosValidationError(
187
+ `Expected compound ID to contain an array, but got ${value}`,
188
+ );
189
+ }
190
+
191
+ if (parsed.length !== fields.length) {
192
+ throw new PothosValidationError(
193
+ `Expected compound ID to contain ${fields.length} elements, but got ${parsed.length}`,
194
+ );
195
+ }
196
+
197
+ const record: Record<string, unknown> = {};
198
+
199
+ fields.forEach((field, i) => {
200
+ record[field.name] = parsed[i];
201
+ });
202
+
203
+ return record;
204
+ } catch (error: unknown) {
205
+ if (error instanceof PothosValidationError) {
206
+ throw error;
207
+ }
208
+
209
+ throw new PothosValidationError(`Invalid serialized ID: ${value}`);
210
+ }
211
+ };
142
212
  }
143
213
 
144
214
  export function getColumnParser(fields: readonly Column[]) {
@@ -159,6 +229,12 @@ export function getColumnParser(fields: readonly Column[]) {
159
229
  );
160
230
  }
161
231
 
232
+ if (parsed.length !== fields.length) {
233
+ throw new PothosValidationError(
234
+ `Expected compound cursor to contain ${fields.length} elements, but got ${parsed.length}`,
235
+ );
236
+ }
237
+
162
238
  const record: Record<string, unknown> = {};
163
239
 
164
240
  fields.forEach((field, i) => {
@@ -404,7 +480,7 @@ export async function resolveDrizzleCursorConnection<T extends {}>(
404
480
  ) {
405
481
  let query: DBQueryConfig<'many', false>;
406
482
  let formatter: (node: Record<string, unknown>) => string;
407
- const results = await resolve((q) => {
483
+ const results = await resolve((q = {}) => {
408
484
  const { cursorColumns, ...connectionQuery } = drizzleCursorConnectionQuery({
409
485
  ...options,
410
486
  orderBy: q.orderBy