@pothos/plugin-drizzle 0.15.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +419 -51
- package/dts/drizzle-field-builder.d.ts +14 -3
- package/dts/drizzle-field-builder.d.ts.map +1 -1
- package/dts/types.d.ts +6 -0
- package/dts/types.d.ts.map +1 -1
- package/dts/utils/cursors.d.ts +6 -2
- package/dts/utils/cursors.d.ts.map +1 -1
- package/esm/drizzle-field-builder.d.ts +16 -3
- package/esm/drizzle-field-builder.d.ts.map +1 -1
- package/esm/drizzle-field-builder.js +144 -8
- package/esm/drizzle-field-builder.js.map +1 -1
- package/esm/field-builder.js +33 -2
- package/esm/field-builder.js.map +1 -1
- package/esm/types.d.ts +6 -0
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/cursors.d.ts +6 -2
- package/esm/utils/cursors.d.ts.map +1 -1
- package/esm/utils/cursors.js +18 -2
- package/esm/utils/cursors.js.map +1 -1
- package/lib/drizzle-field-builder.js +142 -6
- package/lib/drizzle-field-builder.js.map +1 -1
- package/lib/field-builder.js +33 -2
- package/lib/field-builder.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/cursors.js +18 -2
- package/lib/utils/cursors.js.map +1 -1
- package/package.json +5 -5
- package/src/drizzle-field-builder.ts +246 -3
- package/src/field-builder.ts +40 -1
- package/src/types.ts +20 -1
- package/src/utils/cursors.ts +24 -3
package/lib/field-builder.js.map
CHANGED
|
@@ -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","connectionOptions","edgeOptions","ref","typeName","configStore","getTypeConfig","name","tableName","fieldRef","connection","resolveDrizzleCursorConnection","ctx","q","ObjectRef","
|
|
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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"}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":["DrizzleObjectRef","drizzleTableName","Symbol","for"],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"names":["DrizzleObjectRef","drizzleTableName","Symbol","for"],"mappings":";;;;;;;;;;;QAssBSA;eAAAA,2BAAgB;;QAnnBZC;eAAAA;;;2BAmnBoB;AAnnB1B,MAAMA,mBAAmBC,OAAOC,GAAG,CAAC"}
|
package/lib/utils/cursors.js
CHANGED
|
@@ -415,7 +415,7 @@ function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, d
|
|
|
415
415
|
} : whereClauses[0]
|
|
416
416
|
};
|
|
417
417
|
}
|
|
418
|
-
function wrapConnectionResult(results, args, limit, cursor, resolveNode, parent) {
|
|
418
|
+
function wrapConnectionResult(results, args, limit, cursor, resolveNode, parent, totalCount) {
|
|
419
419
|
var _edges_, _edges_1;
|
|
420
420
|
const gotFullResults = results.length === Math.abs(limit);
|
|
421
421
|
const hasNextPage = args.before ? true : args.last ? false : gotFullResults;
|
|
@@ -424,6 +424,7 @@ function wrapConnectionResult(results, args, limit, cursor, resolveNode, parent)
|
|
|
424
424
|
const connection = {
|
|
425
425
|
parent,
|
|
426
426
|
args,
|
|
427
|
+
totalCount,
|
|
427
428
|
edges: [],
|
|
428
429
|
pageInfo: {
|
|
429
430
|
startCursor: null,
|
|
@@ -498,7 +499,22 @@ async function resolveDrizzleCursorConnection(tableName, info, typeName, config,
|
|
|
498
499
|
if (!results) {
|
|
499
500
|
return results;
|
|
500
501
|
}
|
|
501
|
-
|
|
502
|
+
// Handle totalCountOnly case where resolve returns [] without calling query function
|
|
503
|
+
if (!query) {
|
|
504
|
+
return {
|
|
505
|
+
parent,
|
|
506
|
+
args: options.args,
|
|
507
|
+
totalCount: options.totalCount,
|
|
508
|
+
edges: [],
|
|
509
|
+
pageInfo: {
|
|
510
|
+
startCursor: null,
|
|
511
|
+
endCursor: null,
|
|
512
|
+
hasPreviousPage: false,
|
|
513
|
+
hasNextPage: false
|
|
514
|
+
}
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
return wrapConnectionResult(results, options.args, query.limit, formatter, undefined, parent, options.totalCount);
|
|
502
518
|
}
|
|
503
519
|
|
|
504
520
|
//# sourceMappingURL=cursors.js.map
|
package/lib/utils/cursors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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","config","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","dataType","error","name","parsed","Array","isArray","forEach","i","parseOrderBy","table","orderBy","invert","entries","columns","normalized","asc","desc","push","direction","column","tableColumns","getColumns","Object","fromEntries","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","cursorParser","parsedCursor","parts","index","columnName","compare","gt","lt","AND","c","OR","cursorColumns","results","resolveNode","parent","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","queryFromInfo","context","select","paths","undefined"],"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","config","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","dataType","error","name","parsed","Array","isArray","forEach","i","parseOrderBy","table","orderBy","invert","entries","columns","normalized","asc","desc","push","direction","column","tableColumns","getColumns","Object","fromEntries","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","cursorParser","parsedCursor","parts","index","columnName","compare","gt","lt","AND","c","OR","cursorColumns","results","resolveNode","parent","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","queryFromInfo","context","select","paths","undefined"],"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.16.1",
|
|
4
4
|
"description": "A Pothos plugin for drizzle",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./dts/index.d.ts",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
"graphql-scalars": "^1.25.0",
|
|
47
47
|
"graphql-tag": "^2.12.6",
|
|
48
48
|
"postgres": "^3.4.7",
|
|
49
|
-
"@pothos/core": "4.10.0",
|
|
50
49
|
"@pothos/plugin-add-graphql": "4.2.4",
|
|
51
|
-
"@pothos/plugin-errors": "4.8.0",
|
|
52
50
|
"@pothos/plugin-relay": "4.6.2",
|
|
53
|
-
"@pothos/plugin-scope-auth": "4.1.6",
|
|
54
51
|
"@pothos/plugin-with-input": "4.1.4",
|
|
55
|
-
"@pothos/
|
|
52
|
+
"@pothos/plugin-scope-auth": "4.1.6",
|
|
53
|
+
"@pothos/core": "4.10.0",
|
|
54
|
+
"@pothos/test-utils": "2.1.3",
|
|
55
|
+
"@pothos/plugin-errors": "4.8.0"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
58
|
"type": "tsc --project tsconfig.type.json",
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
type FieldRef,
|
|
6
6
|
type InferredFieldOptionKeys,
|
|
7
7
|
type InputFieldMap,
|
|
8
|
+
type InputShapeFromFields,
|
|
8
9
|
type InterfaceParam,
|
|
9
10
|
isThenable,
|
|
10
11
|
type MaybePromise,
|
|
@@ -17,18 +18,37 @@ import {
|
|
|
17
18
|
type ShapeFromTypeParam,
|
|
18
19
|
type TypeParam,
|
|
19
20
|
} from '@pothos/core';
|
|
20
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
and,
|
|
23
|
+
type BuildQueryResult,
|
|
24
|
+
type DBQueryConfig,
|
|
25
|
+
eq,
|
|
26
|
+
type InferSelectModel,
|
|
27
|
+
Many,
|
|
28
|
+
type SQL,
|
|
29
|
+
type Table,
|
|
30
|
+
type TableRelationalConfig,
|
|
31
|
+
} from 'drizzle-orm';
|
|
32
|
+
import {
|
|
33
|
+
type FieldNode,
|
|
34
|
+
Kind as GraphQLKind,
|
|
35
|
+
type GraphQLResolveInfo,
|
|
36
|
+
getNamedType,
|
|
37
|
+
isInterfaceType,
|
|
38
|
+
isObjectType,
|
|
39
|
+
} from 'graphql';
|
|
21
40
|
import type { DrizzleRef } from './interface-ref';
|
|
22
41
|
import type {
|
|
23
42
|
DrizzleConnectionShape,
|
|
24
43
|
ListRelation,
|
|
25
44
|
RelatedConnectionOptions,
|
|
45
|
+
RelatedCountOptions,
|
|
26
46
|
RelatedFieldOptions,
|
|
27
47
|
ShapeFromConnection,
|
|
28
48
|
TypesForRelation,
|
|
29
49
|
VariantFieldOptions,
|
|
30
50
|
} from './types';
|
|
31
|
-
import { getSchemaConfig } from './utils/config';
|
|
51
|
+
import { getClient, getSchemaConfig } from './utils/config';
|
|
32
52
|
import {
|
|
33
53
|
drizzleCursorConnectionQuery,
|
|
34
54
|
getCursorFormatter,
|
|
@@ -156,6 +176,7 @@ export class DrizzleObjectFieldBuilder<
|
|
|
156
176
|
resolve: _,
|
|
157
177
|
extensions,
|
|
158
178
|
description,
|
|
179
|
+
totalCount,
|
|
159
180
|
...options
|
|
160
181
|
}: {
|
|
161
182
|
type?: ObjectRef<Types, unknown, unknown>;
|
|
@@ -164,6 +185,7 @@ export class DrizzleObjectFieldBuilder<
|
|
|
164
185
|
extensions?: {};
|
|
165
186
|
description?: string;
|
|
166
187
|
query?: ((args: {}, ctx: {}) => {}) | {};
|
|
188
|
+
totalCount?: boolean;
|
|
167
189
|
resolve?: (
|
|
168
190
|
query: {},
|
|
169
191
|
parent: unknown,
|
|
@@ -188,6 +210,15 @@ export class DrizzleObjectFieldBuilder<
|
|
|
188
210
|
const ref = options.type ?? getRefFromModel(relationField.targetTableName, this.builder);
|
|
189
211
|
let typeName: string | undefined;
|
|
190
212
|
|
|
213
|
+
const buildCountFilter = (parentTable: TableConfig['table']): SQL => {
|
|
214
|
+
const { sourceColumns, targetColumns } = relationField;
|
|
215
|
+
return and(
|
|
216
|
+
...sourceColumns.map((sourceCol: { name: string }, i: number) =>
|
|
217
|
+
eq(targetColumns[i], parentTable[sourceCol.name as never]),
|
|
218
|
+
),
|
|
219
|
+
)!;
|
|
220
|
+
};
|
|
221
|
+
|
|
191
222
|
const getQuery = (args: PothosSchemaTypes.DefaultConnectionArguments, ctx: {}) => {
|
|
192
223
|
const { limit, orderBy, where, ...fieldQuery } =
|
|
193
224
|
(typeof query === 'function' ? query(args, ctx) : query) ?? {};
|
|
@@ -223,8 +254,31 @@ export class DrizzleObjectFieldBuilder<
|
|
|
223
254
|
args: object,
|
|
224
255
|
context: object,
|
|
225
256
|
nestedQuery: (query: unknown, path?: unknown) => { select?: object },
|
|
257
|
+
getSelection: (path: string[]) => FieldNode | null,
|
|
226
258
|
) => {
|
|
227
259
|
typeName ??= this.builder.configStore.getTypeConfig(ref).name;
|
|
260
|
+
|
|
261
|
+
const hasTotalCount = totalCount && !!getSelection(['totalCount']);
|
|
262
|
+
const hasEdges = !!getSelection(['edges']);
|
|
263
|
+
const hasNodes = !!getSelection(['nodes']);
|
|
264
|
+
const hasPageInfo = !!getSelection(['pageInfo']);
|
|
265
|
+
const totalCountOnly = hasTotalCount && !hasEdges && !hasNodes && !hasPageInfo;
|
|
266
|
+
const countSelection = {
|
|
267
|
+
[`_${name as string}_count`]: (parent: TableConfig['table']) =>
|
|
268
|
+
getClient(this.builder, context).$count(
|
|
269
|
+
relatedTable.table as Table,
|
|
270
|
+
buildCountFilter(parent),
|
|
271
|
+
),
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
if (totalCountOnly) {
|
|
275
|
+
return {
|
|
276
|
+
columns: {},
|
|
277
|
+
with: {},
|
|
278
|
+
extras: countSelection,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
|
|
228
282
|
const nested = nestedQuery(getQuery(args, context).select, {
|
|
229
283
|
getType: () => typeName!,
|
|
230
284
|
paths: [[{ name: 'nodes' }], [{ name: 'edges' }, { name: 'node' }]],
|
|
@@ -235,6 +289,7 @@ export class DrizzleObjectFieldBuilder<
|
|
|
235
289
|
with: {
|
|
236
290
|
[name]: nested,
|
|
237
291
|
},
|
|
292
|
+
extras: hasTotalCount ? countSelection : {},
|
|
238
293
|
};
|
|
239
294
|
};
|
|
240
295
|
const fieldRef = (
|
|
@@ -254,15 +309,67 @@ export class DrizzleObjectFieldBuilder<
|
|
|
254
309
|
parent: unknown,
|
|
255
310
|
args: PothosSchemaTypes.DefaultConnectionArguments,
|
|
256
311
|
context: {},
|
|
312
|
+
info: GraphQLResolveInfo,
|
|
257
313
|
) => {
|
|
314
|
+
const countKey = `_${name as string}_count`;
|
|
315
|
+
const parentRecord = parent as Record<string, unknown>;
|
|
316
|
+
const countValue = totalCount
|
|
317
|
+
? (parentRecord[countKey] as number | undefined)
|
|
318
|
+
: undefined;
|
|
319
|
+
|
|
320
|
+
if (!(name in parentRecord)) {
|
|
321
|
+
return {
|
|
322
|
+
parent,
|
|
323
|
+
args,
|
|
324
|
+
totalCount: countValue,
|
|
325
|
+
edges: [],
|
|
326
|
+
pageInfo: {
|
|
327
|
+
startCursor: null,
|
|
328
|
+
endCursor: null,
|
|
329
|
+
hasPreviousPage: false,
|
|
330
|
+
hasNextPage: false,
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Detect totalCountOnly to skip cursor computation when only totalCount is requested
|
|
336
|
+
const returnType = getNamedType(info.returnType);
|
|
337
|
+
const fields =
|
|
338
|
+
isObjectType(returnType) || isInterfaceType(returnType) ? returnType.getFields() : {};
|
|
339
|
+
const totalCountOnly = info.fieldNodes.every((selection) =>
|
|
340
|
+
selection.selectionSet?.selections.every(
|
|
341
|
+
(s) =>
|
|
342
|
+
s.kind === GraphQLKind.FIELD &&
|
|
343
|
+
(fields[s.name.value]?.extensions?.pothosDrizzleTotalCount ||
|
|
344
|
+
s.name.value === '__typename'),
|
|
345
|
+
),
|
|
346
|
+
);
|
|
347
|
+
|
|
348
|
+
if (totalCountOnly) {
|
|
349
|
+
return {
|
|
350
|
+
parent,
|
|
351
|
+
args,
|
|
352
|
+
totalCount: countValue,
|
|
353
|
+
edges: [],
|
|
354
|
+
pageInfo: {
|
|
355
|
+
startCursor: null,
|
|
356
|
+
endCursor: null,
|
|
357
|
+
hasPreviousPage: false,
|
|
358
|
+
hasNextPage: false,
|
|
359
|
+
},
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
|
|
258
363
|
const { select, cursorColumns } = getQuery(args, context);
|
|
364
|
+
|
|
259
365
|
return wrapConnectionResult(
|
|
260
|
-
|
|
366
|
+
parentRecord[name] as readonly {}[],
|
|
261
367
|
args,
|
|
262
368
|
select.limit,
|
|
263
369
|
getCursorFormatter(cursorColumns, schemaConfig),
|
|
264
370
|
undefined,
|
|
265
371
|
parent,
|
|
372
|
+
countValue,
|
|
266
373
|
);
|
|
267
374
|
},
|
|
268
375
|
},
|
|
@@ -270,6 +377,20 @@ export class DrizzleObjectFieldBuilder<
|
|
|
270
377
|
? connectionOptions
|
|
271
378
|
: {
|
|
272
379
|
...connectionOptions,
|
|
380
|
+
fields: totalCount
|
|
381
|
+
? (
|
|
382
|
+
t: PothosSchemaTypes.ObjectFieldBuilder<SchemaTypes, { totalCount?: number }>,
|
|
383
|
+
) => ({
|
|
384
|
+
totalCount: t.int({
|
|
385
|
+
nullable: false,
|
|
386
|
+
extensions: {
|
|
387
|
+
pothosDrizzleTotalCount: true,
|
|
388
|
+
},
|
|
389
|
+
resolve: (connection) => connection.totalCount,
|
|
390
|
+
}),
|
|
391
|
+
...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),
|
|
392
|
+
})
|
|
393
|
+
: (connectionOptions as { fields: undefined }).fields,
|
|
273
394
|
},
|
|
274
395
|
edgeOptions,
|
|
275
396
|
);
|
|
@@ -406,6 +527,128 @@ export class DrizzleObjectFieldBuilder<
|
|
|
406
527
|
} as never) as never;
|
|
407
528
|
}
|
|
408
529
|
|
|
530
|
+
relatedField<
|
|
531
|
+
Field extends keyof TableConfig['relations'],
|
|
532
|
+
Type extends TypeParam<Types>,
|
|
533
|
+
Nullable extends boolean,
|
|
534
|
+
Args extends InputFieldMap,
|
|
535
|
+
Select extends DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
|
|
536
|
+
ShapeWithSelection = Shape &
|
|
537
|
+
BuildQueryResult<Types['DrizzleRelations'], TableConfig, Select & { columns: {} }>,
|
|
538
|
+
>(
|
|
539
|
+
relationName: Field,
|
|
540
|
+
options: {
|
|
541
|
+
type: Type;
|
|
542
|
+
nullable?: Nullable;
|
|
543
|
+
args?: Args;
|
|
544
|
+
description?: string;
|
|
545
|
+
select: (
|
|
546
|
+
buildFilter: (parentTable: TableConfig['table']) => SQL,
|
|
547
|
+
args: Args extends InputFieldMap ? InputShapeFromFields<Args> : {},
|
|
548
|
+
ctx: Types['Context'],
|
|
549
|
+
nestedQuery: (
|
|
550
|
+
query: DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
|
|
551
|
+
) => DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
|
|
552
|
+
) => Select;
|
|
553
|
+
resolve: (
|
|
554
|
+
parent: ShapeWithSelection,
|
|
555
|
+
args: Args extends InputFieldMap ? InputShapeFromFields<Args> : {},
|
|
556
|
+
ctx: Types['Context'],
|
|
557
|
+
info: unknown,
|
|
558
|
+
) => ShapeFromTypeParam<Types, Type, Nullable>;
|
|
559
|
+
},
|
|
560
|
+
): FieldRef<Types, ShapeFromTypeParam<Types, Type, Nullable>, 'DrizzleObject'> {
|
|
561
|
+
const schemaConfig = getSchemaConfig(this.builder);
|
|
562
|
+
const relationField = schemaConfig.relations?.[this.table].relations[relationName as string];
|
|
563
|
+
|
|
564
|
+
if (!relationField) {
|
|
565
|
+
throw new PothosSchemaError(
|
|
566
|
+
`Could not find relation ${relationName as string} on table ${this.table}`,
|
|
567
|
+
);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
const buildFilter = (parentTable: TableConfig['table']): SQL => {
|
|
571
|
+
const { sourceColumns, targetColumns } = relationField;
|
|
572
|
+
|
|
573
|
+
return and(
|
|
574
|
+
...sourceColumns.map((sourceCol, i) =>
|
|
575
|
+
eq(targetColumns[i], parentTable[sourceCol.name as never]),
|
|
576
|
+
),
|
|
577
|
+
)!;
|
|
578
|
+
};
|
|
579
|
+
|
|
580
|
+
const relationSelect = (
|
|
581
|
+
args: object,
|
|
582
|
+
context: Types['Context'],
|
|
583
|
+
nestedQuery: (query: unknown) => unknown,
|
|
584
|
+
) => {
|
|
585
|
+
const selection = options.select(
|
|
586
|
+
buildFilter as never,
|
|
587
|
+
args as never,
|
|
588
|
+
context,
|
|
589
|
+
nestedQuery as never,
|
|
590
|
+
) as Select & { with?: unknown };
|
|
591
|
+
return {
|
|
592
|
+
columns: selection.columns ?? {},
|
|
593
|
+
extras: selection.extras,
|
|
594
|
+
with: selection.with,
|
|
595
|
+
};
|
|
596
|
+
};
|
|
597
|
+
|
|
598
|
+
return this.field({
|
|
599
|
+
type: options.type,
|
|
600
|
+
nullable: options.nullable,
|
|
601
|
+
args: options.args,
|
|
602
|
+
description: options.description,
|
|
603
|
+
extensions: {
|
|
604
|
+
pothosDrizzleSelect: relationSelect as never,
|
|
605
|
+
},
|
|
606
|
+
resolve: options.resolve as never,
|
|
607
|
+
} as never) as never;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
relatedCount<
|
|
611
|
+
Field extends keyof TableConfig['relations'],
|
|
612
|
+
Args extends InputFieldMap,
|
|
613
|
+
Where extends SQL | undefined,
|
|
614
|
+
>(
|
|
615
|
+
relationName: Field,
|
|
616
|
+
...allArgs: NormalizeArgs<[options: RelatedCountOptions<Types, Shape, Args, Where>]>
|
|
617
|
+
): FieldRef<Types, number, 'DrizzleObject'> {
|
|
618
|
+
const [{ where, ...options } = {} as never] = allArgs;
|
|
619
|
+
const countKey = `_${relationName as string}_count`;
|
|
620
|
+
const schemaConfig = getSchemaConfig(this.builder);
|
|
621
|
+
const relationField = schemaConfig.relations?.[this.table].relations[relationName as string];
|
|
622
|
+
const relatedTable = schemaConfig.relations[relationField.targetTableName];
|
|
623
|
+
|
|
624
|
+
return this.relatedField(relationName, {
|
|
625
|
+
...options,
|
|
626
|
+
type: 'Int' as never,
|
|
627
|
+
nullable: false,
|
|
628
|
+
select: (
|
|
629
|
+
buildFilter: (parent: TableConfig['table']) => SQL,
|
|
630
|
+
args: object,
|
|
631
|
+
ctx: Types['Context'],
|
|
632
|
+
) => {
|
|
633
|
+
const whereClause =
|
|
634
|
+
typeof where === 'function'
|
|
635
|
+
? (where as (args: unknown, ctx: unknown) => SQL | undefined)(args, ctx)
|
|
636
|
+
: where;
|
|
637
|
+
|
|
638
|
+
return {
|
|
639
|
+
extras: {
|
|
640
|
+
[countKey]: (parent: TableConfig['table']) =>
|
|
641
|
+
getClient(this.builder, ctx).$count(
|
|
642
|
+
relatedTable.table as Table,
|
|
643
|
+
whereClause ? and(buildFilter(parent), whereClause) : buildFilter(parent),
|
|
644
|
+
),
|
|
645
|
+
},
|
|
646
|
+
} as never;
|
|
647
|
+
},
|
|
648
|
+
resolve: (parent: Record<string, number>) => parent[countKey],
|
|
649
|
+
} as never) as FieldRef<Types, number, 'DrizzleObject'>;
|
|
650
|
+
}
|
|
651
|
+
|
|
409
652
|
expose<
|
|
410
653
|
Type extends TypeParam<Types>,
|
|
411
654
|
Nullable extends boolean,
|
package/src/field-builder.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { FieldRef } from '@pothos/core';
|
|
1
|
+
import type { FieldRef, MaybePromise } from '@pothos/core';
|
|
2
2
|
import { type FieldKind, ObjectRef, RootFieldBuilder, type SchemaTypes } from '@pothos/core';
|
|
3
3
|
import type { TableRelationalConfig } from 'drizzle-orm';
|
|
4
4
|
import type { GraphQLResolveInfo } from 'graphql';
|
|
5
|
+
import { isInterfaceType, isObjectType, Kind } from 'graphql';
|
|
5
6
|
import type { DrizzleRef } from './interface-ref';
|
|
6
7
|
import type { DrizzleConnectionFieldOptions } from './types';
|
|
7
8
|
import { getSchemaConfig } from './utils/config';
|
|
@@ -101,6 +102,7 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
|
|
|
101
102
|
maxSize = this.builder.options.drizzle?.maxConnectionSize,
|
|
102
103
|
defaultSize = this.builder.options.drizzle?.defaultConnectionSize,
|
|
103
104
|
resolve,
|
|
105
|
+
totalCount,
|
|
104
106
|
...options
|
|
105
107
|
}: DrizzleConnectionFieldOptions<
|
|
106
108
|
SchemaTypes,
|
|
@@ -133,6 +135,21 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
|
|
|
133
135
|
context: {},
|
|
134
136
|
info: GraphQLResolveInfo,
|
|
135
137
|
) => {
|
|
138
|
+
const returnType = info.returnType;
|
|
139
|
+
const fields =
|
|
140
|
+
isObjectType(returnType) || isInterfaceType(returnType) ? returnType.getFields() : {};
|
|
141
|
+
|
|
142
|
+
const selections = info.fieldNodes;
|
|
143
|
+
|
|
144
|
+
const totalCountOnly = selections.every((selection) =>
|
|
145
|
+
selection.selectionSet?.selections.every(
|
|
146
|
+
(s) =>
|
|
147
|
+
s.kind === Kind.FIELD &&
|
|
148
|
+
(fields[s.name.value]?.extensions?.pothosDrizzleTotalCount ||
|
|
149
|
+
s.name.value === '__typename'),
|
|
150
|
+
),
|
|
151
|
+
);
|
|
152
|
+
|
|
136
153
|
return resolveDrizzleCursorConnection(
|
|
137
154
|
tableName,
|
|
138
155
|
info,
|
|
@@ -143,8 +160,13 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
|
|
|
143
160
|
maxSize,
|
|
144
161
|
defaultSize,
|
|
145
162
|
args,
|
|
163
|
+
totalCount: totalCount && (() => totalCount(parent, args as never, context, info)),
|
|
146
164
|
},
|
|
147
165
|
(q) => {
|
|
166
|
+
if (totalCountOnly) {
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
|
|
148
170
|
// return checkIfQueryIsUsed(
|
|
149
171
|
// this.builder,
|
|
150
172
|
// query,
|
|
@@ -160,6 +182,23 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
|
|
|
160
182
|
? connectionOptions
|
|
161
183
|
: {
|
|
162
184
|
...connectionOptions,
|
|
185
|
+
fields: totalCount
|
|
186
|
+
? (
|
|
187
|
+
t: PothosSchemaTypes.ObjectFieldBuilder<
|
|
188
|
+
SchemaTypes,
|
|
189
|
+
{ totalCount?: () => MaybePromise<number> }
|
|
190
|
+
>,
|
|
191
|
+
) => ({
|
|
192
|
+
totalCount: t.int({
|
|
193
|
+
nullable: false,
|
|
194
|
+
extensions: {
|
|
195
|
+
pothosDrizzleTotalCount: true,
|
|
196
|
+
},
|
|
197
|
+
resolve: (parent) => parent.totalCount?.(),
|
|
198
|
+
}),
|
|
199
|
+
...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),
|
|
200
|
+
})
|
|
201
|
+
: (connectionOptions as { fields: undefined }).fields,
|
|
163
202
|
extensions: {
|
|
164
203
|
...(connectionOptions as Record<string, object> | undefined)?.extensions,
|
|
165
204
|
},
|
package/src/types.ts
CHANGED
|
@@ -51,6 +51,7 @@ export type DrizzleClient = {
|
|
|
51
51
|
readonly relations: AnyRelations;
|
|
52
52
|
};
|
|
53
53
|
query: {};
|
|
54
|
+
$count: (table: Table, filter?: SQL) => SQL<number>;
|
|
54
55
|
};
|
|
55
56
|
|
|
56
57
|
export type DrizzlePluginOptions<Types extends SchemaTypes> = {
|
|
@@ -428,6 +429,18 @@ export type RefForRelation<Types extends SchemaTypes, Rel extends Relation> = Re
|
|
|
428
429
|
? ObjectRef<Types, TypesForRelation<Types, Rel>>
|
|
429
430
|
: [ObjectRef<Types, TypesForRelation<Types, Rel>>];
|
|
430
431
|
|
|
432
|
+
export type RelatedCountOptions<
|
|
433
|
+
Types extends SchemaTypes,
|
|
434
|
+
Shape,
|
|
435
|
+
Args extends InputFieldMap,
|
|
436
|
+
Where,
|
|
437
|
+
> = Omit<
|
|
438
|
+
PothosSchemaTypes.ObjectFieldOptions<Types, Shape, 'Int', false, Args, number>,
|
|
439
|
+
'type' | InferredFieldOptionKeys
|
|
440
|
+
> & {
|
|
441
|
+
where?: Where | ((args: InputShapeFromFields<Args>, context: Types['Context']) => Where);
|
|
442
|
+
};
|
|
443
|
+
|
|
431
444
|
export type TypesForRelation<Types extends SchemaTypes, Rel extends Relation> = BuildQueryResult<
|
|
432
445
|
Types['DrizzleRelations'],
|
|
433
446
|
Types['DrizzleRelations'][Rel['targetTable']['_']['name']],
|
|
@@ -543,6 +556,12 @@ export type DrizzleConnectionFieldOptions<
|
|
|
543
556
|
type: Type;
|
|
544
557
|
defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
|
|
545
558
|
maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
|
|
559
|
+
totalCount?: (
|
|
560
|
+
parent: ParentShape,
|
|
561
|
+
args: ConnectionArgs,
|
|
562
|
+
context: Types['Context'],
|
|
563
|
+
info: GraphQLResolveInfo,
|
|
564
|
+
) => MaybePromise<number>;
|
|
546
565
|
|
|
547
566
|
resolve: (
|
|
548
567
|
query: <T = {}>(
|
|
@@ -626,7 +645,7 @@ export type RelatedConnectionOptions<
|
|
|
626
645
|
|
|
627
646
|
defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
|
|
628
647
|
maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
|
|
629
|
-
|
|
648
|
+
totalCount?: boolean;
|
|
630
649
|
}
|
|
631
650
|
: never);
|
|
632
651
|
|