@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.
- package/CHANGELOG.md +6 -0
- package/dts/drizzle-field-builder.d.ts +2 -1
- package/dts/drizzle-field-builder.d.ts.map +1 -1
- package/dts/global-types.d.ts +8 -2
- package/dts/global-types.d.ts.map +1 -1
- package/dts/node-ref.d.ts +7 -1
- package/dts/node-ref.d.ts.map +1 -1
- package/dts/types.d.ts +3 -3
- package/dts/types.d.ts.map +1 -1
- package/dts/utils/cursors.d.ts +4 -1
- package/dts/utils/cursors.d.ts.map +1 -1
- package/esm/drizzle-field-builder.d.ts +2 -1
- package/esm/drizzle-field-builder.d.ts.map +1 -1
- package/esm/drizzle-field-builder.js +1 -1
- package/esm/drizzle-field-builder.js.map +1 -1
- package/esm/global-types.d.ts +8 -2
- package/esm/global-types.d.ts.map +1 -1
- package/esm/global-types.js.map +1 -1
- package/esm/node-ref.d.ts +7 -1
- package/esm/node-ref.d.ts.map +1 -1
- package/esm/node-ref.js +22 -0
- package/esm/node-ref.js.map +1 -1
- package/esm/schema-builder.js +6 -4
- package/esm/schema-builder.js.map +1 -1
- package/esm/types.d.ts +3 -3
- package/esm/types.d.ts.map +1 -1
- package/esm/utils/cursors.d.ts +4 -1
- package/esm/utils/cursors.d.ts.map +1 -1
- package/esm/utils/cursors.js +80 -22
- package/esm/utils/cursors.js.map +1 -1
- package/lib/drizzle-field-builder.js +1 -1
- package/lib/drizzle-field-builder.js.map +1 -1
- package/lib/node-ref.js +32 -3
- package/lib/node-ref.js.map +1 -1
- package/lib/schema-builder.js +5 -3
- package/lib/schema-builder.js.map +1 -1
- package/lib/utils/cursors.js +90 -25
- package/lib/utils/cursors.js.map +1 -1
- package/package.json +2 -2
- package/src/drizzle-field-builder.ts +5 -5
- package/src/global-types.ts +11 -2
- package/src/node-ref.ts +18 -1
- package/src/schema-builder.ts +15 -5
- package/src/types.ts +5 -4
- package/src/utils/cursors.ts +98 -22
package/lib/utils/cursors.js
CHANGED
|
@@ -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
|
|
163
|
+
function parseSerializedIDColumn(id, field) {
|
|
131
164
|
if (!id) {
|
|
132
165
|
return id;
|
|
133
166
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
package/lib/utils/cursors.js.map
CHANGED
|
@@ -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
|
+
"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.
|
|
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
|
|
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
|
) {
|
package/src/global-types.ts
CHANGED
|
@@ -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<
|
|
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
|
-
|
|
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
|
+
}
|
package/src/schema-builder.ts
CHANGED
|
@@ -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 {
|
|
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<
|
|
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 =
|
|
97
|
-
const idParser =
|
|
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
|
-
|
|
|
143
|
-
|
|
|
144
|
-
| ((columns: Types['DrizzleRelationSchema'][Table]['columns']) =>
|
|
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
|
|
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
|
|
package/src/utils/cursors.ts
CHANGED
|
@@ -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
|
|
145
|
+
export function parseSerializedIDColumn(id: string, field: Column): unknown {
|
|
117
146
|
if (!id) {
|
|
118
147
|
return id;
|
|
119
148
|
}
|
|
120
149
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|