@pothos/plugin-drizzle 0.15.0 → 0.16.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 +11 -0
- package/README.md +417 -49
- 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 +115 -7
- 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 +113 -5
- 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 +3 -3
- package/src/drizzle-field-builder.ts +207 -3
- package/src/field-builder.ts +40 -1
- package/src/types.ts +20 -1
- package/src/utils/cursors.ts +24 -3
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.0",
|
|
4
4
|
"description": "A Pothos plugin for drizzle",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./dts/index.d.ts",
|
|
@@ -47,10 +47,10 @@
|
|
|
47
47
|
"graphql-tag": "^2.12.6",
|
|
48
48
|
"postgres": "^3.4.7",
|
|
49
49
|
"@pothos/core": "4.10.0",
|
|
50
|
-
"@pothos/plugin-add-graphql": "4.2.4",
|
|
51
50
|
"@pothos/plugin-errors": "4.8.0",
|
|
52
|
-
"@pothos/plugin-relay": "4.6.2",
|
|
53
51
|
"@pothos/plugin-scope-auth": "4.1.6",
|
|
52
|
+
"@pothos/plugin-add-graphql": "4.2.4",
|
|
53
|
+
"@pothos/plugin-relay": "4.6.2",
|
|
54
54
|
"@pothos/plugin-with-input": "4.1.4",
|
|
55
55
|
"@pothos/test-utils": "2.1.3"
|
|
56
56
|
},
|
|
@@ -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,30 @@ 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 type { FieldNode } from 'graphql';
|
|
21
33
|
import type { DrizzleRef } from './interface-ref';
|
|
22
34
|
import type {
|
|
23
35
|
DrizzleConnectionShape,
|
|
24
36
|
ListRelation,
|
|
25
37
|
RelatedConnectionOptions,
|
|
38
|
+
RelatedCountOptions,
|
|
26
39
|
RelatedFieldOptions,
|
|
27
40
|
ShapeFromConnection,
|
|
28
41
|
TypesForRelation,
|
|
29
42
|
VariantFieldOptions,
|
|
30
43
|
} from './types';
|
|
31
|
-
import { getSchemaConfig } from './utils/config';
|
|
44
|
+
import { getClient, getSchemaConfig } from './utils/config';
|
|
32
45
|
import {
|
|
33
46
|
drizzleCursorConnectionQuery,
|
|
34
47
|
getCursorFormatter,
|
|
@@ -156,6 +169,7 @@ export class DrizzleObjectFieldBuilder<
|
|
|
156
169
|
resolve: _,
|
|
157
170
|
extensions,
|
|
158
171
|
description,
|
|
172
|
+
totalCount,
|
|
159
173
|
...options
|
|
160
174
|
}: {
|
|
161
175
|
type?: ObjectRef<Types, unknown, unknown>;
|
|
@@ -164,6 +178,7 @@ export class DrizzleObjectFieldBuilder<
|
|
|
164
178
|
extensions?: {};
|
|
165
179
|
description?: string;
|
|
166
180
|
query?: ((args: {}, ctx: {}) => {}) | {};
|
|
181
|
+
totalCount?: boolean;
|
|
167
182
|
resolve?: (
|
|
168
183
|
query: {},
|
|
169
184
|
parent: unknown,
|
|
@@ -188,6 +203,15 @@ export class DrizzleObjectFieldBuilder<
|
|
|
188
203
|
const ref = options.type ?? getRefFromModel(relationField.targetTableName, this.builder);
|
|
189
204
|
let typeName: string | undefined;
|
|
190
205
|
|
|
206
|
+
const buildCountFilter = (parentTable: TableConfig['table']): SQL => {
|
|
207
|
+
const { sourceColumns, targetColumns } = relationField;
|
|
208
|
+
return and(
|
|
209
|
+
...sourceColumns.map((sourceCol: { name: string }, i: number) =>
|
|
210
|
+
eq(targetColumns[i], parentTable[sourceCol.name as never]),
|
|
211
|
+
),
|
|
212
|
+
)!;
|
|
213
|
+
};
|
|
214
|
+
|
|
191
215
|
const getQuery = (args: PothosSchemaTypes.DefaultConnectionArguments, ctx: {}) => {
|
|
192
216
|
const { limit, orderBy, where, ...fieldQuery } =
|
|
193
217
|
(typeof query === 'function' ? query(args, ctx) : query) ?? {};
|
|
@@ -223,8 +247,31 @@ export class DrizzleObjectFieldBuilder<
|
|
|
223
247
|
args: object,
|
|
224
248
|
context: object,
|
|
225
249
|
nestedQuery: (query: unknown, path?: unknown) => { select?: object },
|
|
250
|
+
getSelection: (path: string[]) => FieldNode | null,
|
|
226
251
|
) => {
|
|
227
252
|
typeName ??= this.builder.configStore.getTypeConfig(ref).name;
|
|
253
|
+
|
|
254
|
+
const hasTotalCount = totalCount && !!getSelection(['totalCount']);
|
|
255
|
+
const hasEdges = !!getSelection(['edges']);
|
|
256
|
+
const hasNodes = !!getSelection(['nodes']);
|
|
257
|
+
const hasPageInfo = !!getSelection(['pageInfo']);
|
|
258
|
+
const totalCountOnly = hasTotalCount && !hasEdges && !hasNodes && !hasPageInfo;
|
|
259
|
+
const countSelection = {
|
|
260
|
+
[`_${name as string}_count`]: (parent: TableConfig['table']) =>
|
|
261
|
+
getClient(this.builder, context).$count(
|
|
262
|
+
relatedTable.table as Table,
|
|
263
|
+
buildCountFilter(parent),
|
|
264
|
+
),
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
if (totalCountOnly) {
|
|
268
|
+
return {
|
|
269
|
+
columns: {},
|
|
270
|
+
with: {},
|
|
271
|
+
extras: countSelection,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
|
|
228
275
|
const nested = nestedQuery(getQuery(args, context).select, {
|
|
229
276
|
getType: () => typeName!,
|
|
230
277
|
paths: [[{ name: 'nodes' }], [{ name: 'edges' }, { name: 'node' }]],
|
|
@@ -235,6 +282,7 @@ export class DrizzleObjectFieldBuilder<
|
|
|
235
282
|
with: {
|
|
236
283
|
[name]: nested,
|
|
237
284
|
},
|
|
285
|
+
extras: hasTotalCount ? countSelection : {},
|
|
238
286
|
};
|
|
239
287
|
};
|
|
240
288
|
const fieldRef = (
|
|
@@ -255,14 +303,37 @@ export class DrizzleObjectFieldBuilder<
|
|
|
255
303
|
args: PothosSchemaTypes.DefaultConnectionArguments,
|
|
256
304
|
context: {},
|
|
257
305
|
) => {
|
|
306
|
+
const countKey = `_${name as string}_count`;
|
|
307
|
+
const parentRecord = parent as Record<string, unknown>;
|
|
308
|
+
const countValue = totalCount
|
|
309
|
+
? (parentRecord[countKey] as number | undefined)
|
|
310
|
+
: undefined;
|
|
311
|
+
|
|
312
|
+
if (!(name in parentRecord)) {
|
|
313
|
+
return {
|
|
314
|
+
parent,
|
|
315
|
+
args,
|
|
316
|
+
totalCount: countValue,
|
|
317
|
+
edges: [],
|
|
318
|
+
pageInfo: {
|
|
319
|
+
startCursor: null,
|
|
320
|
+
endCursor: null,
|
|
321
|
+
hasPreviousPage: false,
|
|
322
|
+
hasNextPage: false,
|
|
323
|
+
},
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
|
|
258
327
|
const { select, cursorColumns } = getQuery(args, context);
|
|
328
|
+
|
|
259
329
|
return wrapConnectionResult(
|
|
260
|
-
|
|
330
|
+
parentRecord[name] as readonly {}[],
|
|
261
331
|
args,
|
|
262
332
|
select.limit,
|
|
263
333
|
getCursorFormatter(cursorColumns, schemaConfig),
|
|
264
334
|
undefined,
|
|
265
335
|
parent,
|
|
336
|
+
countValue,
|
|
266
337
|
);
|
|
267
338
|
},
|
|
268
339
|
},
|
|
@@ -270,6 +341,17 @@ export class DrizzleObjectFieldBuilder<
|
|
|
270
341
|
? connectionOptions
|
|
271
342
|
: {
|
|
272
343
|
...connectionOptions,
|
|
344
|
+
fields: totalCount
|
|
345
|
+
? (
|
|
346
|
+
t: PothosSchemaTypes.ObjectFieldBuilder<SchemaTypes, { totalCount?: number }>,
|
|
347
|
+
) => ({
|
|
348
|
+
totalCount: t.int({
|
|
349
|
+
nullable: false,
|
|
350
|
+
resolve: (connection) => connection.totalCount,
|
|
351
|
+
}),
|
|
352
|
+
...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),
|
|
353
|
+
})
|
|
354
|
+
: (connectionOptions as { fields: undefined }).fields,
|
|
273
355
|
},
|
|
274
356
|
edgeOptions,
|
|
275
357
|
);
|
|
@@ -406,6 +488,128 @@ export class DrizzleObjectFieldBuilder<
|
|
|
406
488
|
} as never) as never;
|
|
407
489
|
}
|
|
408
490
|
|
|
491
|
+
relatedField<
|
|
492
|
+
Field extends keyof TableConfig['relations'],
|
|
493
|
+
Type extends TypeParam<Types>,
|
|
494
|
+
Nullable extends boolean,
|
|
495
|
+
Args extends InputFieldMap,
|
|
496
|
+
Select extends DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
|
|
497
|
+
ShapeWithSelection = Shape &
|
|
498
|
+
BuildQueryResult<Types['DrizzleRelations'], TableConfig, Select & { columns: {} }>,
|
|
499
|
+
>(
|
|
500
|
+
relationName: Field,
|
|
501
|
+
options: {
|
|
502
|
+
type: Type;
|
|
503
|
+
nullable?: Nullable;
|
|
504
|
+
args?: Args;
|
|
505
|
+
description?: string;
|
|
506
|
+
select: (
|
|
507
|
+
buildFilter: (parentTable: TableConfig['table']) => SQL,
|
|
508
|
+
args: Args extends InputFieldMap ? InputShapeFromFields<Args> : {},
|
|
509
|
+
ctx: Types['Context'],
|
|
510
|
+
nestedQuery: (
|
|
511
|
+
query: DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
|
|
512
|
+
) => DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
|
|
513
|
+
) => Select;
|
|
514
|
+
resolve: (
|
|
515
|
+
parent: ShapeWithSelection,
|
|
516
|
+
args: Args extends InputFieldMap ? InputShapeFromFields<Args> : {},
|
|
517
|
+
ctx: Types['Context'],
|
|
518
|
+
info: unknown,
|
|
519
|
+
) => ShapeFromTypeParam<Types, Type, Nullable>;
|
|
520
|
+
},
|
|
521
|
+
): FieldRef<Types, ShapeFromTypeParam<Types, Type, Nullable>, 'DrizzleObject'> {
|
|
522
|
+
const schemaConfig = getSchemaConfig(this.builder);
|
|
523
|
+
const relationField = schemaConfig.relations?.[this.table].relations[relationName as string];
|
|
524
|
+
|
|
525
|
+
if (!relationField) {
|
|
526
|
+
throw new PothosSchemaError(
|
|
527
|
+
`Could not find relation ${relationName as string} on table ${this.table}`,
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
const buildFilter = (parentTable: TableConfig['table']): SQL => {
|
|
532
|
+
const { sourceColumns, targetColumns } = relationField;
|
|
533
|
+
|
|
534
|
+
return and(
|
|
535
|
+
...sourceColumns.map((sourceCol, i) =>
|
|
536
|
+
eq(targetColumns[i], parentTable[sourceCol.name as never]),
|
|
537
|
+
),
|
|
538
|
+
)!;
|
|
539
|
+
};
|
|
540
|
+
|
|
541
|
+
const relationSelect = (
|
|
542
|
+
args: object,
|
|
543
|
+
context: Types['Context'],
|
|
544
|
+
nestedQuery: (query: unknown) => unknown,
|
|
545
|
+
) => {
|
|
546
|
+
const selection = options.select(
|
|
547
|
+
buildFilter as never,
|
|
548
|
+
args as never,
|
|
549
|
+
context,
|
|
550
|
+
nestedQuery as never,
|
|
551
|
+
) as Select & { with?: unknown };
|
|
552
|
+
return {
|
|
553
|
+
columns: selection.columns ?? {},
|
|
554
|
+
extras: selection.extras,
|
|
555
|
+
with: selection.with,
|
|
556
|
+
};
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
return this.field({
|
|
560
|
+
type: options.type,
|
|
561
|
+
nullable: options.nullable,
|
|
562
|
+
args: options.args,
|
|
563
|
+
description: options.description,
|
|
564
|
+
extensions: {
|
|
565
|
+
pothosDrizzleSelect: relationSelect as never,
|
|
566
|
+
},
|
|
567
|
+
resolve: options.resolve as never,
|
|
568
|
+
} as never) as never;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
relatedCount<
|
|
572
|
+
Field extends keyof TableConfig['relations'],
|
|
573
|
+
Args extends InputFieldMap,
|
|
574
|
+
Where extends SQL | undefined,
|
|
575
|
+
>(
|
|
576
|
+
relationName: Field,
|
|
577
|
+
...allArgs: NormalizeArgs<[options: RelatedCountOptions<Types, Shape, Args, Where>]>
|
|
578
|
+
): FieldRef<Types, number, 'DrizzleObject'> {
|
|
579
|
+
const [{ where, ...options } = {} as never] = allArgs;
|
|
580
|
+
const countKey = `_${relationName as string}_count`;
|
|
581
|
+
const schemaConfig = getSchemaConfig(this.builder);
|
|
582
|
+
const relationField = schemaConfig.relations?.[this.table].relations[relationName as string];
|
|
583
|
+
const relatedTable = schemaConfig.relations[relationField.targetTableName];
|
|
584
|
+
|
|
585
|
+
return this.relatedField(relationName, {
|
|
586
|
+
...options,
|
|
587
|
+
type: 'Int' as never,
|
|
588
|
+
nullable: false,
|
|
589
|
+
select: (
|
|
590
|
+
buildFilter: (parent: TableConfig['table']) => SQL,
|
|
591
|
+
args: object,
|
|
592
|
+
ctx: Types['Context'],
|
|
593
|
+
) => {
|
|
594
|
+
const whereClause =
|
|
595
|
+
typeof where === 'function'
|
|
596
|
+
? (where as (args: unknown, ctx: unknown) => SQL | undefined)(args, ctx)
|
|
597
|
+
: where;
|
|
598
|
+
|
|
599
|
+
return {
|
|
600
|
+
extras: {
|
|
601
|
+
[countKey]: (parent: TableConfig['table']) =>
|
|
602
|
+
getClient(this.builder, ctx).$count(
|
|
603
|
+
relatedTable.table as Table,
|
|
604
|
+
whereClause ? and(buildFilter(parent), whereClause) : buildFilter(parent),
|
|
605
|
+
),
|
|
606
|
+
},
|
|
607
|
+
} as never;
|
|
608
|
+
},
|
|
609
|
+
resolve: (parent: Record<string, number>) => parent[countKey],
|
|
610
|
+
} as never) as FieldRef<Types, number, 'DrizzleObject'>;
|
|
611
|
+
}
|
|
612
|
+
|
|
409
613
|
expose<
|
|
410
614
|
Type extends TypeParam<Types>,
|
|
411
615
|
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
|
|
package/src/utils/cursors.ts
CHANGED
|
@@ -462,6 +462,7 @@ export function wrapConnectionResult<T extends {}>(
|
|
|
462
462
|
cursor: (node: T) => string,
|
|
463
463
|
resolveNode?: (node: Record<string, unknown>) => unknown,
|
|
464
464
|
parent?: unknown,
|
|
465
|
+
totalCount?: number | (() => MaybePromise<number>) | null,
|
|
465
466
|
) {
|
|
466
467
|
const gotFullResults = results.length === Math.abs(limit);
|
|
467
468
|
const hasNextPage = args.before ? true : args.last ? false : gotFullResults;
|
|
@@ -471,6 +472,7 @@ export function wrapConnectionResult<T extends {}>(
|
|
|
471
472
|
const connection = {
|
|
472
473
|
parent,
|
|
473
474
|
args,
|
|
475
|
+
totalCount,
|
|
474
476
|
edges: [] as ({ cursor: string; node: unknown } | null)[],
|
|
475
477
|
pageInfo: {
|
|
476
478
|
startCursor: null as string | null,
|
|
@@ -513,14 +515,16 @@ export async function resolveDrizzleCursorConnection<T extends {}>(
|
|
|
513
515
|
info: GraphQLResolveInfo,
|
|
514
516
|
typeName: string,
|
|
515
517
|
config: PothosDrizzleSchemaConfig,
|
|
516
|
-
options: Omit<DrizzleCursorConnectionQueryOptions, 'orderBy' | 'config' | 'table'
|
|
518
|
+
options: Omit<DrizzleCursorConnectionQueryOptions, 'orderBy' | 'config' | 'table'> & {
|
|
519
|
+
totalCount?: () => MaybePromise<number>;
|
|
520
|
+
},
|
|
517
521
|
resolve: (
|
|
518
522
|
queryFn: (query: QueryForDrizzleConnection<SchemaTypes, TableRelationalConfig>) => SelectionMap,
|
|
519
523
|
) => MaybePromise<readonly T[]>,
|
|
520
524
|
parent: unknown,
|
|
521
525
|
) {
|
|
522
526
|
const table = config.relations[tableName];
|
|
523
|
-
let query: DBQueryConfig<'many'
|
|
527
|
+
let query: DBQueryConfig<'many'> | undefined;
|
|
524
528
|
let formatter: (node: Record<string, unknown>) => string;
|
|
525
529
|
const results = await resolve((q = {}) => {
|
|
526
530
|
const { cursorColumns, ...connectionQuery } = drizzleCursorConnectionQuery({
|
|
@@ -562,12 +566,29 @@ export async function resolveDrizzleCursorConnection<T extends {}>(
|
|
|
562
566
|
return results;
|
|
563
567
|
}
|
|
564
568
|
|
|
569
|
+
// Handle totalCountOnly case where resolve returns [] without calling query function
|
|
570
|
+
if (!query) {
|
|
571
|
+
return {
|
|
572
|
+
parent,
|
|
573
|
+
args: options.args,
|
|
574
|
+
totalCount: options.totalCount,
|
|
575
|
+
edges: [],
|
|
576
|
+
pageInfo: {
|
|
577
|
+
startCursor: null,
|
|
578
|
+
endCursor: null,
|
|
579
|
+
hasPreviousPage: false,
|
|
580
|
+
hasNextPage: false,
|
|
581
|
+
},
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
|
|
565
585
|
return wrapConnectionResult(
|
|
566
586
|
results,
|
|
567
587
|
options.args,
|
|
568
|
-
query
|
|
588
|
+
query.limit as number,
|
|
569
589
|
formatter!,
|
|
570
590
|
undefined,
|
|
571
591
|
parent,
|
|
592
|
+
options.totalCount,
|
|
572
593
|
);
|
|
573
594
|
}
|