@pothos/plugin-drizzle 0.19.1 → 0.20.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 +16 -0
- package/README.md +50 -0
- package/dts/connection-helpers.d.ts.map +1 -1
- package/dts/global-types.d.ts +10 -1
- package/dts/global-types.d.ts.map +1 -1
- package/dts/index.d.ts +2 -1
- package/dts/index.d.ts.map +1 -1
- package/dts/utils/adapter.d.ts +1 -1
- package/dts/utils/adapter.d.ts.map +1 -1
- package/dts/utils/map-query.d.ts +16 -4
- package/dts/utils/map-query.d.ts.map +1 -1
- package/esm/connection-helpers.d.ts.map +1 -1
- package/esm/connection-helpers.js +2 -1
- package/esm/connection-helpers.js.map +1 -1
- package/esm/field-builder.js +10 -1
- package/esm/field-builder.js.map +1 -1
- package/esm/global-types.d.ts +10 -1
- package/esm/global-types.d.ts.map +1 -1
- package/esm/global-types.js.map +1 -1
- package/esm/index.d.ts +2 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -1
- package/esm/index.js.map +1 -1
- package/esm/utils/adapter.d.ts +1 -1
- package/esm/utils/adapter.d.ts.map +1 -1
- package/esm/utils/adapter.js +12 -2
- package/esm/utils/adapter.js.map +1 -1
- package/esm/utils/map-query.d.ts +16 -4
- package/esm/utils/map-query.d.ts.map +1 -1
- package/esm/utils/map-query.js +11 -13
- package/esm/utils/map-query.js.map +1 -1
- package/lib/connection-helpers.js +2 -1
- package/lib/connection-helpers.js.map +1 -1
- package/lib/field-builder.js +9 -0
- package/lib/field-builder.js.map +1 -1
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/adapter.js +12 -2
- package/lib/utils/adapter.js.map +1 -1
- package/lib/utils/map-query.js +11 -13
- package/lib/utils/map-query.js.map +1 -1
- package/package.json +7 -7
- package/src/connection-helpers.ts +2 -1
- package/src/field-builder.ts +12 -1
- package/src/global-types.ts +30 -0
- package/src/index.ts +7 -1
- package/src/utils/adapter.ts +12 -3
- package/src/utils/map-query.ts +42 -21
package/esm/utils/adapter.js
CHANGED
|
@@ -13,6 +13,7 @@ function _define_property(obj, key, value) {
|
|
|
13
13
|
}
|
|
14
14
|
import { createContextCache, PothosValidationError } from '@pothos/core';
|
|
15
15
|
import { NodeAdapter } from '@pothos/selection-mapper';
|
|
16
|
+
import { getColumns } from 'drizzle-orm';
|
|
16
17
|
import { pathInfoFor } from './path-info.js';
|
|
17
18
|
import { omitUndefinedKeys } from './selections.js';
|
|
18
19
|
/** A map without `columns`: every column. Shared and never mutated. */ const ALL = Object.freeze({});
|
|
@@ -76,10 +77,19 @@ import { omitUndefinedKeys } from './selections.js';
|
|
|
76
77
|
visit.allColumns();
|
|
77
78
|
return;
|
|
78
79
|
}
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
const selected = Object.keys(columns).filter((key)=>columns[key]);
|
|
81
|
+
if (selected.length > 0) {
|
|
82
|
+
for (const key of selected){
|
|
81
83
|
visit.column(key);
|
|
82
84
|
}
|
|
85
|
+
} else if (Object.values(columns).some((value)=>value === false)) {
|
|
86
|
+
// An exclusion-only projection selects every other column. Resolve it before
|
|
87
|
+
// merging so another field can still request a column excluded here.
|
|
88
|
+
for (const key of Object.keys(getColumns(model.table))){
|
|
89
|
+
if (columns[key] !== false) {
|
|
90
|
+
visit.column(key);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
83
93
|
}
|
|
84
94
|
}
|
|
85
95
|
/**
|
package/esm/utils/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/adapter.ts"],"names":["createContextCache","PothosValidationError","NodeAdapter","pathInfoFor","omitUndefinedKeys","ALL","Object","freeze","DrizzleAdapter","modelFor","type","extensions","pothosDrizzleTable","typeSelection","selection","pothosDrizzleSelect","undefined","fieldSelection","field","compiled","fieldSelections","get","args","context","nested","selected","position","resolvedPath","pathInfo","path","segments","query","set","visitQuery","columns","with","withSelection","extras","model","visit","readRelations","key","keys","computed","allColumns","column","
|
|
1
|
+
{"version":3,"sources":["../../src/utils/adapter.ts"],"names":["createContextCache","PothosValidationError","NodeAdapter","getColumns","pathInfoFor","omitUndefinedKeys","ALL","Object","freeze","DrizzleAdapter","modelFor","type","extensions","pothosDrizzleTable","typeSelection","selection","pothosDrizzleSelect","undefined","fieldSelection","field","compiled","fieldSelections","get","args","context","nested","selected","position","resolvedPath","pathInfo","path","segments","query","set","visitQuery","columns","with","withSelection","extras","model","visit","readRelations","key","keys","computed","allColumns","filter","length","column","values","some","value","table","computedConflicts","name","has","toQuery","node","config","getPrimaryKey","columnToTsName","child","relations","relationConfig","relation","targetTableName","skipDeferredFragments","WeakMap","drizzleAdapter"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,kBAAkB,EAAEC,qBAAqB,QAAQ,eAAe;AACzE,SAEEC,WAAW,QAKN,2BAA2B;AAClC,SAASC,UAAU,QAAgD,cAAc;AAIjF,SAASC,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,iBAAiB,QAA2B,kBAAkB;AAOvE,qEAAqE,GACrE,MAAMC,MAAoBC,OAAOC,MAAM,CAAC,CAAC;AAEzC;;;;;;;;CAQC,GACD,OAAO,MAAMC,uBAAuBP;IAalC,8FAA8F;IAC9FQ,SAASC,IAAsB,EAAE;YACxBA;QAAP,QAAOA,mBAAAA,KAAKC,UAAU,cAAfD,uCAAAA,iBAAiBE,kBAAkB;IAC5C;IAEAC,cAAcH,IAAsB,EAAE;YAElBA;QADlB,kFAAkF;QAClF,MAAMI,aAAYJ,mBAAAA,KAAKC,UAAU,cAAfD,uCAAAA,iBAAiBK,mBAAmB;QAEtD,OAAOD,cAAc,OAAOT,MAAMS,aAAaE;IACjD;IAEAC,eAAeC,KAAqC,EAAE;YAClCA;QAAlB,MAAMJ,aAAYI,oBAAAA,MAAMP,UAAU,cAAhBO,wCAAAA,kBAAkBH,mBAAmB;QACvD,IAAI,OAAOD,cAAc,YAAY;YACnC,OAAOA,aAAaE;QACtB;QAEA,IAAIG,WAAW,IAAI,CAACC,eAAe,CAACC,GAAG,CAACH;QACxC,IAAI,CAACC,UAAU;YACbA,WAAW,CAACG,MAAMC,SAASC,QAAQC,UAAUC;gBAC3C,qFAAqF;gBACrF,qFAAqF;gBACrF,IAAIC;gBACJ,MAAMC,WAAqB;oBACzB,IAAIC,QAAO;wBACTF,yBAAAA,0BAAAA,eAAAA,eAAiBxB,YAAYuB;wBAC7B,OAAOC,aAAaE,IAAI;oBAC1B;oBACA,IAAIC,YAAW;wBACbH,yBAAAA,0BAAAA,eAAAA,eAAiBxB,YAAYuB;wBAC7B,OAAOC,aAAaG,QAAQ;oBAC9B;gBACF;gBACA,OAAOhB,UACLQ,MACAC,SACA,CAACQ,OAAOF,MAAMnB,OACZc,OACE,+EAA+E;oBAC9E,OAAOO,UAAU,aAAaA,MAAMT,MAAMC,SAASK,YAAYG,OAGhEF,MACAnB,OAEJe,UACAG;YAEJ;YACA,IAAI,CAACR,eAAe,CAACY,GAAG,CAACd,OAAOC;QAClC;QACA,OAAOA;IACT;IAEAc,WACE,EAAEC,OAAO,EAAEC,MAAMC,aAAa,EAAEC,MAAM,EAAE,GAAGf,MAAoB,EAC/DgB,KAA4B,EAC5BC,KAAqB,EACrB;QACA,IAAI,CAACC,aAAa,CAACJ,eAAeE,OAAOC;QACzCA,MAAMjB,IAAI,CAAClB,kBAAkBkB;QAE7B,KAAK,MAAMmB,OAAOnC,OAAOoC,IAAI,CAACL,mBAAAA,oBAAAA,SAAU,CAAC,GAAI;YAC3CE,MAAMI,QAAQ,CAACF,KAAKJ,MAAO,CAACI,IAAI;QAClC;QAEA,IAAI,CAACP,SAAS;YACZ,sEAAsE;YACtEK,MAAMK,UAAU;YAEhB;QACF;QAEA,MAAMnB,WAAWnB,OAAOoC,IAAI,CAACR,SAASW,MAAM,CAAC,CAACJ,MAAQP,OAAO,CAACO,IAAI;QAClE,IAAIhB,SAASqB,MAAM,GAAG,GAAG;YACvB,KAAK,MAAML,OAAOhB,SAAU;gBAC1Bc,MAAMQ,MAAM,CAACN;YACf;QACF,OAAO,IAAInC,OAAO0C,MAAM,CAACd,SAASe,IAAI,CAAC,CAACC,QAAUA,UAAU,QAAQ;YAClE,6EAA6E;YAC7E,qEAAqE;YACrE,KAAK,MAAMT,OAAOnC,OAAOoC,IAAI,CAACxC,WAAWoC,MAAMa,KAAK,GAAa;gBAC/D,IAAIjB,OAAO,CAACO,IAAI,KAAK,OAAO;oBAC1BF,MAAMQ,MAAM,CAACN;gBACf;YACF;QACF;IACF;IAEA;;;GAGC,GACD,AAASW,kBAAkBT,QAAsC,EAAEU,IAAY,EAAEH,KAAc,EAAE;QAC/F,OAAOP,SAASW,GAAG,CAACD,SAASV,SAAStB,GAAG,CAACgC,UAAUH;IACtD;IAEAK,QAAQC,IAAiB,EAAgB;QACvC,sFAAsF;QACtF,qDAAqD;QACrD,MAAMzB,QAGF;YAAE,GAAGyB,KAAKlC,IAAI;YAAEY,SAASlB;YAAWmB,MAAM,CAAC;YAAGE,QAAQ,CAAC;QAAE;QAE7D,IAAImB,KAAKtB,OAAO,EAAE;YAChBH,MAAMG,OAAO,GAAG,CAAC;YAEjB,KAAK,MAAMa,UAAUS,KAAKtB,OAAO,CAAE;gBACjCH,MAAMG,OAAO,CAACa,OAAO,GAAG;YAC1B;YAEA,KAAK,MAAMA,UAAU,IAAI,CAACU,MAAM,CAACC,aAAa,CAACF,KAAKlB,KAAK,CAACe,IAAI,EAAG;gBAC/DtB,MAAMG,OAAO,CAAC,IAAI,CAACuB,MAAM,CAACE,cAAc,CAACZ,QAAQ,GAAG;YACtD;QACF;QAEA,KAAK,MAAM,CAACN,KAAKS,MAAM,IAAIM,KAAKb,QAAQ,CAAE;YACxCZ,MAAMM,MAAM,CAACI,IAAI,GAAGS;QACtB;QAEA,KAAK,MAAM,CAACT,KAAKmB,MAAM,IAAIJ,KAAKK,SAAS,CAAE;YACzC9B,MAAMI,IAAI,CAACM,IAAI,GAAG,IAAI,CAACc,OAAO,CAACK;QACjC;QAEA,OAAO7B;IACT;IAEA,kEAAkE,GAClE,AAAQS,cACNJ,aAAkD,EAClDE,KAA4B,EAC5BC,KAAqB,EACrB;QACA,KAAK,MAAME,OAAOnC,OAAOoC,IAAI,CAACN,0BAAAA,2BAAAA,gBAAiB,CAAC,GAAI;YAClD,MAAMc,QAAQd,aAAc,CAACK,IAAI;YAEjC,IAAI,CAACS,OAAO;gBACV;YACF;YAEA,MAAMY,iBAAiBxB,MAAMuB,SAAS,CAACpB,IAAI;YAE3C,IAAI,CAACqB,gBAAgB;gBACnB,MAAM,IAAI9D,sBAAsB,CAAC,SAAS,EAAEyC,IAAI,mBAAmB,EAAEH,MAAMe,IAAI,EAAE;YACnF;YAEAd,MAAMwB,QAAQ,CACZtB,KACA,IAAI,CAACgB,MAAM,CAACI,SAAS,CAACC,eAAeE,eAAe,CAAC,EACrDd,UAAU,OAAO7C,MAAO6C;QAE5B;IACF;IA/JA,YAAY,AAAiBO,MAAiC,CAAE;QAC9D,KAAK,8CARP,uBAASQ,yBAAT,KAAA,IAEA,uBAAiB7C,mBAAjB,KAAA,SAK6BqC,SAAAA,aALZrC,kBAAkB,IAAI8C;QAOrC,IAAI,CAACD,qBAAqB,GAAGR,OAAOQ,qBAAqB;IAC3D;AA6JF;AAEA,OAAO,MAAME,iBAAiBpE,mBAC5B,CAAC0D,SAAsC,IAAIjD,eAAeiD,SAC1D"}
|
package/esm/utils/map-query.d.ts
CHANGED
|
@@ -1,25 +1,37 @@
|
|
|
1
|
+
import { type MaybePromise } from '@pothos/core';
|
|
1
2
|
import { type PathSegment } from '@pothos/selection-mapper';
|
|
3
|
+
import type { DBQueryConfig } from 'drizzle-orm';
|
|
2
4
|
import type { GraphQLResolveInfo } from 'graphql';
|
|
3
5
|
import { type DrizzlePlan } from './adapter.js';
|
|
4
6
|
import type { PothosDrizzleSchemaConfig } from './config.js';
|
|
5
7
|
import type { SelectionMap } from './selections.js';
|
|
6
|
-
export interface QueryFromInfoOptions<
|
|
8
|
+
export interface QueryFromInfoOptions<Await extends boolean = false> {
|
|
7
9
|
config: PothosDrizzleSchemaConfig;
|
|
8
10
|
context: object;
|
|
9
11
|
info: GraphQLResolveInfo;
|
|
10
12
|
typeName?: string;
|
|
11
|
-
select?: T;
|
|
12
13
|
path?: PathSegment[];
|
|
13
14
|
paths?: PathSegment[][];
|
|
15
|
+
/** Whether the caller will await the query. Async selections otherwise throw. */
|
|
16
|
+
awaitSelections?: Await;
|
|
14
17
|
}
|
|
15
|
-
|
|
18
|
+
/** Only explicitly selected columns are guaranteed; planning metadata is not part of the query. */
|
|
19
|
+
export type QueryFromInfoResult<T> = Omit<T, keyof QueryFromInfoOptions<boolean> | 'columns'> & {
|
|
20
|
+
columns: T extends {
|
|
21
|
+
columns: infer Columns extends {};
|
|
22
|
+
} ? Columns : {};
|
|
23
|
+
};
|
|
24
|
+
/** A boolean async option must account for promises, just like Prisma's helper. */
|
|
25
|
+
export type QueryFromInfoReturn<T, Await extends boolean> = [Await] extends [false] ? QueryFromInfoResult<T> : MaybePromise<QueryFromInfoResult<T>>;
|
|
26
|
+
/** Merge query options with the GraphQL selection and return a query ready for Drizzle. */
|
|
27
|
+
export declare function queryFromInfo<const T extends object, Await extends boolean = false>({ config, context, info, typeName, path, paths, awaitSelections, ...selection }: QueryFromInfoOptions<Await> & T & Record<Exclude<keyof T, keyof QueryFromInfoOptions<Await> | keyof DBQueryConfig<'many'>>, never>): QueryFromInfoReturn<T, Await>;
|
|
16
28
|
/**
|
|
17
29
|
* The plan for the field `info` resolves (or `typeName`), nothing recorded: a promise while a
|
|
18
30
|
* select beneath the field is async, undefined when `paths` are given and nothing is selected
|
|
19
31
|
* under them. The model loader's, and the first step of a `drizzleField` resolve, whose
|
|
20
32
|
* merges are recorded so the resolver's `query()` selection can come first.
|
|
21
33
|
*/
|
|
22
|
-
export declare function planFromInfo({ config, ...options }: Omit<QueryFromInfoOptions
|
|
34
|
+
export declare function planFromInfo({ config, ...options }: Omit<QueryFromInfoOptions, 'awaitSelections'>): DrizzlePlan | undefined;
|
|
23
35
|
/**
|
|
24
36
|
* The query for a plan `planFromInfo` returned, settled: the caller's `select` first, the walked
|
|
25
37
|
* plan after it, the mappings recorded, and the query serialized. This is how the `query()`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-query.d.ts","sourceRoot":"","sources":["../../src/utils/map-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"map-query.d.ts","sourceRoot":"","sources":["../../src/utils/map-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAQ,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,cAAc,CAAC;AAEhE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,oBAAoB,CAAC,KAAK,SAAS,OAAO,GAAG,KAAK;IACjE,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;IACxB,iFAAiF;IACjF,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAED,mGAAmG;AACnG,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,GAAG;IAC9F,OAAO,EAAE,CAAC,SAAS;QAAE,OAAO,EAAE,MAAM,OAAO,SAAS,EAAE,CAAA;KAAE,GAAG,OAAO,GAAG,EAAE,CAAC;CACzE,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,KAAK,SAAS,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/E,mBAAmB,CAAC,CAAC,CAAC,GACtB,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzC,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,OAAO,GAAG,KAAK,EAAE,EACnF,MAAM,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,eAAe,EACf,GAAG,SAAS,EACb,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAC5B,CAAC,GACD,MAAM,CACJ,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,oBAAoB,CAAC,KAAK,CAAC,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,EACjF,KAAK,CACN,GAAG,mBAAmB,CAAC,CAAC,EAAE,KAAK,CAAC,CAYlC;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,GAAG,OAAO,EACX,EAAE,IAAI,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,GAAG,WAAW,GAAG,SAAS,CAEzE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAClD,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,CAAC,GACT,CAAC,CAQH"}
|
package/esm/utils/map-query.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import { isThenable } from '@pothos/core';
|
|
2
2
|
import { Plan } from '@pothos/selection-mapper';
|
|
3
3
|
import { drizzleAdapter } from './adapter.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
import { checkAwaitSelections } from './await-selections.js';
|
|
5
|
+
/** Merge query options with the GraphQL selection and return a query ready for Drizzle. */ export function queryFromInfo({ config, context, info, typeName, path, paths, awaitSelections, ...selection }) {
|
|
6
|
+
const plan = planFromInfo({
|
|
7
|
+
config,
|
|
8
|
+
context,
|
|
9
|
+
info,
|
|
10
|
+
typeName,
|
|
11
|
+
path,
|
|
12
|
+
paths
|
|
12
13
|
});
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return select !== null && select !== void 0 ? select : {};
|
|
16
|
-
}
|
|
17
|
-
return isThenable(plan) ? plan.then((settled)=>settled.query()) : plan.query();
|
|
14
|
+
const query = isThenable(plan) ? plan.then((settled)=>queryFromPlan(settled, selection)) : queryFromPlan(plan, selection);
|
|
15
|
+
return checkAwaitSelections(query, awaitSelections, 'queryFromInfo', `${info.parentType.name}.${info.fieldName}`);
|
|
18
16
|
}
|
|
19
17
|
/**
|
|
20
18
|
* The plan for the field `info` resolves (or `typeName`), nothing recorded: a promise while a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/map-query.ts"],"names":["isThenable","Plan","drizzleAdapter","queryFromInfo","config","
|
|
1
|
+
{"version":3,"sources":["../../src/utils/map-query.ts"],"names":["isThenable","Plan","drizzleAdapter","checkAwaitSelections","queryFromInfo","config","context","info","typeName","path","paths","awaitSelections","selection","plan","planFromInfo","query","then","settled","queryFromPlan","parentType","name","fieldName","options","fromInfo","select","columns","undefined"],"mappings":"AAAA,SAASA,UAAU,QAA2B,eAAe;AAC7D,SAA2BC,IAAI,QAAQ,2BAA2B;AAGlE,SAA2BC,cAAc,QAAQ,eAAe;AAChE,SAASC,oBAAoB,QAAQ,wBAAwB;AAyB7D,yFAAyF,GACzF,OAAO,SAASC,cAAqE,EACnFC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,QAAQ,EACRC,IAAI,EACJC,KAAK,EACLC,eAAe,EACf,GAAGC,WAMF;IACD,MAAMC,OAAOC,aAAa;QAAET;QAAQC;QAASC;QAAMC;QAAUC;QAAMC;IAAM;IACzE,MAAMK,QAAQf,WAAWa,QACrBA,KAAKG,IAAI,CAAC,CAACC,UAAYC,cAAcD,SAAoCL,cACzEM,cAAcL,MAAMD;IAExB,OAAOT,qBACLY,OACAJ,iBACA,iBACA,GAAGJ,KAAKY,UAAU,CAACC,IAAI,CAAC,CAAC,EAAEb,KAAKc,SAAS,EAAE;AAE/C;AAEA;;;;;CAKC,GACD,OAAO,SAASP,aAAa,EAC3BT,MAAM,EACN,GAAGiB,SAC2C;IAC9C,OAAOrB,KAAKsB,QAAQ,CAACrB,eAAeG,SAASiB;AAC/C;AAEA;;;;;;CAMC,GACD,OAAO,SAASJ,cACdL,IAA6B,EAC7BW,MAAU;IAEV,IAAI,CAACX,MAAM;QACT,+EAA+E;QAC/E,OAAQW,mBAAAA,oBAAAA,SAAU,CAAC;IACrB;IAEA,+EAA+E;IAC/E,OAAOX,KAAKE,KAAK,CAACS,SAAS;QAAEC,SAAS,CAAC;QAAG,GAAGD,MAAM;IAAC,IAAIE;AAC1D"}
|
|
@@ -67,10 +67,11 @@ function drizzleConnectionHelpers(builder, refOrType, { select, resolveNode, que
|
|
|
67
67
|
* the declared type denies.
|
|
68
68
|
*/ function getQuery(args, ctx, nestedSelectionOrInfo, options) {
|
|
69
69
|
const nestedSelection = typeof nestedSelectionOrInfo === 'function' ? nestedSelectionOrInfo : (select, path)=>(0, _mapquery.queryFromInfo)({
|
|
70
|
+
...select,
|
|
70
71
|
info: nestedSelectionOrInfo,
|
|
71
72
|
context: ctx,
|
|
72
73
|
config,
|
|
73
|
-
|
|
74
|
+
awaitSelections: true,
|
|
74
75
|
path
|
|
75
76
|
});
|
|
76
77
|
// Both callbacks start now; the query waits for whichever of them is async.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection-helpers.ts"],"names":["drizzleConnectionHelpers","builder","refOrType","select","resolveNode","query","args","createArgs","maxSize","options","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","config","getSchemaConfig","adapter","drizzleAdapter","tableName","baseQueryFor","ctx","completeValue","orEmpty","resolveList","baseQuery","list","parent","cursorFields","getQueryArgs","formatCursor","getCursorFormatter","wrapConnectionResult","limit","edge","resolve","isThenable","then","resolved","orderBy","where","fieldQuery","table","relations","columns","connectionQuery","drizzleCursorConnectionQuery","getPrimaryKey","extras","Math","abs","getQuery","nestedSelectionOrInfo","nestedSelection","path","queryFromInfo","info","context","nestedSelect","sel","error","built","Promise","all","nested","base","buildQuery","checkAwaitSelections","
|
|
1
|
+
{"version":3,"sources":["../src/connection-helpers.ts"],"names":["drizzleConnectionHelpers","builder","refOrType","select","resolveNode","query","args","createArgs","maxSize","options","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","config","getSchemaConfig","adapter","drizzleAdapter","tableName","baseQueryFor","ctx","completeValue","orEmpty","resolveList","baseQuery","list","parent","cursorFields","getQueryArgs","formatCursor","getCursorFormatter","wrapConnectionResult","limit","edge","resolve","isThenable","then","resolved","orderBy","where","fieldQuery","table","relations","columns","connectionQuery","drizzleCursorConnectionQuery","getPrimaryKey","extras","Math","abs","getQuery","nestedSelectionOrInfo","nestedSelection","path","queryFromInfo","info","context","awaitSelections","nestedSelect","sel","error","built","Promise","all","nested","base","buildQuery","checkAwaitSelections","String","node","createNode","mergeQuery","omitUndefinedKeys","toQuery","getArgs","ref","getRefFromModel"],"mappings":"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"}
|
package/lib/field-builder.js
CHANGED
|
@@ -122,5 +122,14 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection({ type, maxSize
|
|
|
122
122
|
}, edgeOptions);
|
|
123
123
|
return fieldRef;
|
|
124
124
|
};
|
|
125
|
+
fieldBuilderProto.drizzleQueryFromInfo = function drizzleQueryFromInfo(type, options) {
|
|
126
|
+
const ref = typeof type === 'string' ? (0, _refs.getRefFromModel)(type, this.builder) : type;
|
|
127
|
+
return (0, _mapquery.queryFromInfo)({
|
|
128
|
+
...options,
|
|
129
|
+
config: (0, _config.getSchemaConfig)(this.builder),
|
|
130
|
+
typeName: this.builder.configStore.getTypeConfig(ref).name,
|
|
131
|
+
awaitSelections: true
|
|
132
|
+
});
|
|
133
|
+
};
|
|
125
134
|
|
|
126
135
|
//# sourceMappingURL=field-builder.js.map
|
package/lib/field-builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/field-builder.ts"],"names":["fieldBuilderProto","RootFieldBuilder","prototype","refForType","builder","type","modelOrRef","Array","isArray","typeRef","getRefFromModel","planResolver","resolve","run","plan","parent","args","context","info","select","queryFromPlan","planFromInfo","config","getSchemaConfig","isThenable","then","settled","drizzleField","options","field","drizzleFieldWithInput","fieldWithInput","drizzleConnection","maxSize","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","totalCount","connectionOptions","edgeOptions","ref","typeName","configStore","getTypeConfig","name","tableName","resolveConnection","totalCountOnly","resolveDrizzleCursorConnection","ctx","q","fieldRef","connection","returnType","getNamedType","fields","isObjectType","isInterfaceType","getFields","selections","fieldNodes","every","selection","selectionSet","s","kind","Kind","FIELD","value","extensions","pothosDrizzleTotalCount","paths","ObjectRef","t","int","nullable"],"mappings":";;;;sBAOO;yBAG2D;wBAIlC;yBACe;
|
|
1
|
+
{"version":3,"sources":["../src/field-builder.ts"],"names":["fieldBuilderProto","RootFieldBuilder","prototype","refForType","builder","type","modelOrRef","Array","isArray","typeRef","getRefFromModel","planResolver","resolve","run","plan","parent","args","context","info","select","queryFromPlan","planFromInfo","config","getSchemaConfig","isThenable","then","settled","drizzleField","options","field","drizzleFieldWithInput","fieldWithInput","drizzleConnection","maxSize","drizzle","maxConnectionSize","defaultSize","defaultConnectionSize","totalCount","connectionOptions","edgeOptions","ref","typeName","configStore","getTypeConfig","name","tableName","resolveConnection","totalCountOnly","resolveDrizzleCursorConnection","ctx","q","fieldRef","connection","returnType","getNamedType","fields","isObjectType","isInterfaceType","getFields","selections","fieldNodes","every","selection","selectionSet","s","kind","Kind","FIELD","value","extensions","pothosDrizzleTotalCount","paths","ObjectRef","t","int","nullable","drizzleQueryFromInfo","queryFromInfo","awaitSelections"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -26,6 +26,12 @@ _export(exports, {
|
|
|
26
26
|
},
|
|
27
27
|
get drizzleTableName () {
|
|
28
28
|
return _types.drizzleTableName;
|
|
29
|
+
},
|
|
30
|
+
get getSchemaConfig () {
|
|
31
|
+
return _config.getSchemaConfig;
|
|
32
|
+
},
|
|
33
|
+
get queryFromInfo () {
|
|
34
|
+
return _mapquery.queryFromInfo;
|
|
29
35
|
}
|
|
30
36
|
});
|
|
31
37
|
require("./global-types.js");
|
|
@@ -37,6 +43,7 @@ const _connectionhelpers = require("./connection-helpers.js");
|
|
|
37
43
|
const _drizzlefieldbuilder = require("./drizzle-field-builder.js");
|
|
38
44
|
const _types = _export_star(require("./types.js"), exports);
|
|
39
45
|
const _config = require("./utils/config.js");
|
|
46
|
+
const _mapquery = require("./utils/map-query.js");
|
|
40
47
|
function _export_star(from, to) {
|
|
41
48
|
Object.keys(from).forEach(function(k) {
|
|
42
49
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["DrizzleObjectFieldBuilder","PothosDrizzlePlugin","drizzleClientCache","drizzleConnectionHelpers","drizzleTableName","pluginName","BasePlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosDrizzleModel","table","pothosDrizzleTable","iface","interfaces","interfaceConfig","buildCache","getTypeConfig","interfaceModel","PothosSchemaError","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosDrizzleSelect","args","ctx","nestedQuery","_resolveSelection","pathInfo","nestedQueryWithPath","Object","assign","completeValue","wrapSelect","columns","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosDrizzleLoaded","parentTypes","Set","add","modelLoader","pothosDrizzleLoader","Error","parent","context","info","mapping","getLoaderMapping","path","setFieldMapping","loadSelection","then","result","selected","SchemaBuilder","registerPlugin"],"mappings":";;;;;;;;;;;QAkBSA;eAAAA,8CAAyB;;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["DrizzleObjectFieldBuilder","PothosDrizzlePlugin","drizzleClientCache","drizzleConnectionHelpers","drizzleTableName","getSchemaConfig","queryFromInfo","pluginName","BasePlugin","onTypeConfig","typeConfig","kind","model","extensions","pothosDrizzleModel","table","pothosDrizzleTable","iface","interfaces","interfaceConfig","buildCache","getTypeConfig","interfaceModel","PothosSchemaError","name","onOutputFieldConfig","fieldConfig","pothosOptions","select","pothosDrizzleSelect","args","ctx","nestedQuery","_resolveSelection","pathInfo","nestedQueryWithPath","Object","assign","completeValue","wrapSelect","columns","wrapResolve","resolver","parentConfig","parentType","loadedCheck","pothosDrizzleLoaded","parentTypes","Set","add","modelLoader","pothosDrizzleLoader","Error","parent","context","info","mapping","getLoaderMapping","path","setFieldMapping","loadSelection","then","result","selected","SchemaBuilder","registerPlugin"],"mappings":"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"}
|
package/lib/utils/adapter.js
CHANGED
|
@@ -18,6 +18,7 @@ _export(exports, {
|
|
|
18
18
|
});
|
|
19
19
|
const _core = require("@pothos/core");
|
|
20
20
|
const _selectionmapper = require("@pothos/selection-mapper");
|
|
21
|
+
const _drizzleorm = require("drizzle-orm");
|
|
21
22
|
const _pathinfo = require("./path-info.js");
|
|
22
23
|
const _selections = require("./selections.js");
|
|
23
24
|
function _define_property(obj, key, value) {
|
|
@@ -86,10 +87,19 @@ class DrizzleAdapter extends _selectionmapper.NodeAdapter {
|
|
|
86
87
|
visit.allColumns();
|
|
87
88
|
return;
|
|
88
89
|
}
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
const selected = Object.keys(columns).filter((key)=>columns[key]);
|
|
91
|
+
if (selected.length > 0) {
|
|
92
|
+
for (const key of selected){
|
|
91
93
|
visit.column(key);
|
|
92
94
|
}
|
|
95
|
+
} else if (Object.values(columns).some((value)=>value === false)) {
|
|
96
|
+
// An exclusion-only projection selects every other column. Resolve it before
|
|
97
|
+
// merging so another field can still request a column excluded here.
|
|
98
|
+
for (const key of Object.keys((0, _drizzleorm.getColumns)(model.table))){
|
|
99
|
+
if (columns[key] !== false) {
|
|
100
|
+
visit.column(key);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
93
103
|
}
|
|
94
104
|
}
|
|
95
105
|
/**
|
package/lib/utils/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/adapter.ts"],"names":["DrizzleAdapter","drizzleAdapter","ALL","Object","freeze","NodeAdapter","modelFor","type","extensions","pothosDrizzleTable","typeSelection","selection","pothosDrizzleSelect","undefined","fieldSelection","field","compiled","fieldSelections","get","args","context","nested","selected","position","resolvedPath","pathInfo","path","pathInfoFor","segments","query","set","visitQuery","columns","with","withSelection","extras","model","visit","readRelations","omitUndefinedKeys","key","keys","computed","allColumns","column","
|
|
1
|
+
{"version":3,"sources":["../../src/utils/adapter.ts"],"names":["DrizzleAdapter","drizzleAdapter","ALL","Object","freeze","NodeAdapter","modelFor","type","extensions","pothosDrizzleTable","typeSelection","selection","pothosDrizzleSelect","undefined","fieldSelection","field","compiled","fieldSelections","get","args","context","nested","selected","position","resolvedPath","pathInfo","path","pathInfoFor","segments","query","set","visitQuery","columns","with","withSelection","extras","model","visit","readRelations","omitUndefinedKeys","key","keys","computed","allColumns","filter","length","column","values","some","value","getColumns","table","computedConflicts","name","has","toQuery","node","config","getPrimaryKey","columnToTsName","child","relations","relationConfig","PothosValidationError","relation","targetTableName","skipDeferredFragments","WeakMap","createContextCache"],"mappings":"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"}
|
package/lib/utils/map-query.js
CHANGED
|
@@ -22,20 +22,18 @@ _export(exports, {
|
|
|
22
22
|
const _core = require("@pothos/core");
|
|
23
23
|
const _selectionmapper = require("@pothos/selection-mapper");
|
|
24
24
|
const _adapter = require("./adapter.js");
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
const _awaitselections = require("./await-selections.js");
|
|
26
|
+
function queryFromInfo({ config, context, info, typeName, path, paths, awaitSelections, ...selection }) {
|
|
27
|
+
const plan = planFromInfo({
|
|
28
|
+
config,
|
|
29
|
+
context,
|
|
30
|
+
info,
|
|
31
|
+
typeName,
|
|
32
|
+
path,
|
|
33
|
+
paths
|
|
33
34
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return select !== null && select !== void 0 ? select : {};
|
|
37
|
-
}
|
|
38
|
-
return (0, _core.isThenable)(plan) ? plan.then((settled)=>settled.query()) : plan.query();
|
|
35
|
+
const query = (0, _core.isThenable)(plan) ? plan.then((settled)=>queryFromPlan(settled, selection)) : queryFromPlan(plan, selection);
|
|
36
|
+
return (0, _awaitselections.checkAwaitSelections)(query, awaitSelections, 'queryFromInfo', `${info.parentType.name}.${info.fieldName}`);
|
|
39
37
|
}
|
|
40
38
|
function planFromInfo({ config, ...options }) {
|
|
41
39
|
return _selectionmapper.Plan.fromInfo((0, _adapter.drizzleAdapter)(config), options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/map-query.ts"],"names":["planFromInfo","queryFromInfo","queryFromPlan","config","
|
|
1
|
+
{"version":3,"sources":["../../src/utils/map-query.ts"],"names":["planFromInfo","queryFromInfo","queryFromPlan","config","context","info","typeName","path","paths","awaitSelections","selection","plan","query","isThenable","then","settled","checkAwaitSelections","parentType","name","fieldName","options","Plan","fromInfo","drizzleAdapter","select","columns","undefined"],"mappings":";;;;;;;;;;;QAiEgBA;eAAAA;;QAlCAC;eAAAA;;QAgDAC;eAAAA;;;sBA/E8B;iCACP;yBAGU;iCACZ;AA0B9B,SAASD,cAAqE,EACnFE,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,QAAQ,EACRC,IAAI,EACJC,KAAK,EACLC,eAAe,EACf,GAAGC,WAMF;IACD,MAAMC,OAAOX,aAAa;QAAEG;QAAQC;QAASC;QAAMC;QAAUC;QAAMC;IAAM;IACzE,MAAMI,QAAQC,IAAAA,gBAAU,EAACF,QACrBA,KAAKG,IAAI,CAAC,CAACC,UAAYb,cAAca,SAAoCL,cACzER,cAAcS,MAAMD;IAExB,OAAOM,IAAAA,qCAAoB,EACzBJ,OACAH,iBACA,iBACA,GAAGJ,KAAKY,UAAU,CAACC,IAAI,CAAC,CAAC,EAAEb,KAAKc,SAAS,EAAE;AAE/C;AAQO,SAASnB,aAAa,EAC3BG,MAAM,EACN,GAAGiB,SAC2C;IAC9C,OAAOC,qBAAI,CAACC,QAAQ,CAACC,IAAAA,uBAAc,EAACpB,SAASiB;AAC/C;AASO,SAASlB,cACdS,IAA6B,EAC7Ba,MAAU;IAEV,IAAI,CAACb,MAAM;QACT,+EAA+E;QAC/E,OAAQa,mBAAAA,oBAAAA,SAAU,CAAC;IACrB;IAEA,+EAA+E;IAC/E,OAAOb,KAAKC,KAAK,CAACY,SAAS;QAAEC,SAAS,CAAC;QAAG,GAAGD,MAAM;IAAC,IAAIE;AAC1D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pothos/plugin-drizzle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "A Pothos plugin for drizzle",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./dts/index.d.ts",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
"graphql-scalars": "^1.25.0",
|
|
49
49
|
"graphql-tag": "^2.12.6",
|
|
50
50
|
"postgres": "^3.4.9",
|
|
51
|
-
"@pothos/
|
|
52
|
-
"@pothos/
|
|
53
|
-
"@pothos/plugin-errors": "4.9.
|
|
54
|
-
"@pothos/plugin-relay": "4.8.
|
|
55
|
-
"@pothos/plugin-scope-auth": "4.2.0",
|
|
51
|
+
"@pothos/plugin-add-graphql": "4.3.3",
|
|
52
|
+
"@pothos/core": "4.15.1",
|
|
53
|
+
"@pothos/plugin-errors": "4.9.3",
|
|
54
|
+
"@pothos/plugin-relay": "4.8.1",
|
|
56
55
|
"@pothos/plugin-with-input": "4.1.5",
|
|
57
|
-
"@pothos/test-utils": "2.2.1"
|
|
56
|
+
"@pothos/test-utils": "2.2.1",
|
|
57
|
+
"@pothos/plugin-scope-auth": "4.2.1"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"type": "tsc --project tsconfig.type.json",
|
|
@@ -248,10 +248,11 @@ export function drizzleConnectionHelpers<
|
|
|
248
248
|
? nestedSelectionOrInfo
|
|
249
249
|
: (select, path) =>
|
|
250
250
|
queryFromInfo({
|
|
251
|
+
...(select as SelectionMap),
|
|
251
252
|
info: nestedSelectionOrInfo,
|
|
252
253
|
context: ctx,
|
|
253
254
|
config,
|
|
254
|
-
|
|
255
|
+
awaitSelections: true,
|
|
255
256
|
path,
|
|
256
257
|
});
|
|
257
258
|
// Both callbacks start now; the query waits for whichever of them is async.
|
package/src/field-builder.ts
CHANGED
|
@@ -14,7 +14,7 @@ import type { DrizzleConnectionFieldOptions } from './types.js';
|
|
|
14
14
|
import type { DrizzlePlan } from './utils/adapter.js';
|
|
15
15
|
import { getSchemaConfig } from './utils/config.js';
|
|
16
16
|
import { resolveDrizzleCursorConnection } from './utils/cursors.js';
|
|
17
|
-
import { planFromInfo, queryFromPlan } from './utils/map-query.js';
|
|
17
|
+
import { planFromInfo, queryFromInfo, queryFromPlan } from './utils/map-query.js';
|
|
18
18
|
import { getRefFromModel } from './utils/refs.js';
|
|
19
19
|
import type { SelectionMap } from './utils/selections.js';
|
|
20
20
|
|
|
@@ -241,3 +241,14 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
|
|
|
241
241
|
|
|
242
242
|
return fieldRef;
|
|
243
243
|
} as never;
|
|
244
|
+
|
|
245
|
+
fieldBuilderProto.drizzleQueryFromInfo = function drizzleQueryFromInfo(type, options) {
|
|
246
|
+
const ref = typeof type === 'string' ? getRefFromModel(type, this.builder) : type;
|
|
247
|
+
|
|
248
|
+
return queryFromInfo({
|
|
249
|
+
...options,
|
|
250
|
+
config: getSchemaConfig(this.builder),
|
|
251
|
+
typeName: this.builder.configStore.getTypeConfig(ref).name,
|
|
252
|
+
awaitSelections: true,
|
|
253
|
+
}) as never;
|
|
254
|
+
};
|
package/src/global-types.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
FieldNullability,
|
|
5
5
|
InputFieldMap,
|
|
6
6
|
InterfaceParam,
|
|
7
|
+
MaybeAsyncSelection,
|
|
7
8
|
NormalizeArgs,
|
|
8
9
|
OutputType,
|
|
9
10
|
PluginName,
|
|
@@ -11,12 +12,14 @@ import type {
|
|
|
11
12
|
ShapeFromTypeParam,
|
|
12
13
|
TypeParam,
|
|
13
14
|
} from '@pothos/core';
|
|
15
|
+
import type { PathSegment } from '@pothos/selection-mapper';
|
|
14
16
|
import type {
|
|
15
17
|
BuildQueryResult,
|
|
16
18
|
DBQueryConfig,
|
|
17
19
|
TableRelationalConfig,
|
|
18
20
|
TablesRelationalConfig,
|
|
19
21
|
} from 'drizzle-orm';
|
|
22
|
+
import type { GraphQLResolveInfo } from 'graphql';
|
|
20
23
|
import type { DrizzleObjectFieldBuilder } from './drizzle-field-builder.js';
|
|
21
24
|
import type { PothosDrizzlePlugin } from './index.js';
|
|
22
25
|
import type { DrizzleInterfaceRef, DrizzleRef } from './interface-ref.js';
|
|
@@ -36,6 +39,7 @@ import type {
|
|
|
36
39
|
ShapeFromConnection,
|
|
37
40
|
ShapeFromIdColumns,
|
|
38
41
|
} from './types.js';
|
|
42
|
+
import type { QueryFromInfoResult } from './utils/map-query.js';
|
|
39
43
|
|
|
40
44
|
declare global {
|
|
41
45
|
export namespace PothosSchemaTypes {
|
|
@@ -215,6 +219,32 @@ declare global {
|
|
|
215
219
|
ParentShape,
|
|
216
220
|
Kind extends FieldKind = FieldKind,
|
|
217
221
|
> {
|
|
222
|
+
drizzleQueryFromInfo: <
|
|
223
|
+
Table extends keyof Types['DrizzleRelations'],
|
|
224
|
+
const Selection extends DBQueryConfig<
|
|
225
|
+
'many',
|
|
226
|
+
Types['DrizzleRelations'],
|
|
227
|
+
Types['DrizzleRelations'][Table]
|
|
228
|
+
> = {},
|
|
229
|
+
>(
|
|
230
|
+
type: Table | DrizzleRef<Types, Table>,
|
|
231
|
+
// The concrete query intersection contextually types callbacks while Selection retains literals.
|
|
232
|
+
options: Selection &
|
|
233
|
+
DBQueryConfig<'many', Types['DrizzleRelations'], Types['DrizzleRelations'][Table]> &
|
|
234
|
+
Record<
|
|
235
|
+
Exclude<
|
|
236
|
+
keyof Selection,
|
|
237
|
+
keyof DBQueryConfig<'many'> | 'context' | 'info' | 'path' | 'paths'
|
|
238
|
+
>,
|
|
239
|
+
never
|
|
240
|
+
> & {
|
|
241
|
+
context: Types['Context'];
|
|
242
|
+
info: GraphQLResolveInfo;
|
|
243
|
+
path?: PathSegment[];
|
|
244
|
+
paths?: PathSegment[][];
|
|
245
|
+
},
|
|
246
|
+
) => MaybeAsyncSelection<Types, QueryFromInfoResult<Selection>>;
|
|
247
|
+
|
|
218
248
|
drizzleField: <
|
|
219
249
|
Args extends InputFieldMap,
|
|
220
250
|
Param extends
|
package/src/index.ts
CHANGED
|
@@ -19,7 +19,13 @@ export { drizzleConnectionHelpers } from './connection-helpers.js';
|
|
|
19
19
|
export { DrizzleObjectFieldBuilder } from './drizzle-field-builder.js';
|
|
20
20
|
export * from './types.js';
|
|
21
21
|
export { drizzleTableName } from './types.js';
|
|
22
|
-
export { drizzleClientCache } from './utils/config.js';
|
|
22
|
+
export { drizzleClientCache, getSchemaConfig } from './utils/config.js';
|
|
23
|
+
export {
|
|
24
|
+
type QueryFromInfoOptions,
|
|
25
|
+
type QueryFromInfoResult,
|
|
26
|
+
type QueryFromInfoReturn,
|
|
27
|
+
queryFromInfo,
|
|
28
|
+
} from './utils/map-query.js';
|
|
23
29
|
|
|
24
30
|
const pluginName = 'drizzle';
|
|
25
31
|
|
package/src/utils/adapter.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
type QueryVisitor,
|
|
8
8
|
type SelectFn,
|
|
9
9
|
} from '@pothos/selection-mapper';
|
|
10
|
-
import type
|
|
10
|
+
import { getColumns, type Table, type TableRelationalConfig } from 'drizzle-orm';
|
|
11
11
|
import type { GraphQLField, GraphQLNamedType } from 'graphql';
|
|
12
12
|
import type { DrizzleFieldSelection, PathInfo } from '../types.js';
|
|
13
13
|
import type { PothosDrizzleSchemaConfig } from './config.js';
|
|
@@ -118,10 +118,19 @@ export class DrizzleAdapter extends NodeAdapter<TableRelationalConfig, Selection
|
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
const selected = Object.keys(columns).filter((key) => columns[key]);
|
|
122
|
+
if (selected.length > 0) {
|
|
123
|
+
for (const key of selected) {
|
|
123
124
|
visit.column(key);
|
|
124
125
|
}
|
|
126
|
+
} else if (Object.values(columns).some((value) => value === false)) {
|
|
127
|
+
// An exclusion-only projection selects every other column. Resolve it before
|
|
128
|
+
// merging so another field can still request a column excluded here.
|
|
129
|
+
for (const key of Object.keys(getColumns(model.table as Table))) {
|
|
130
|
+
if (columns[key] !== false) {
|
|
131
|
+
visit.column(key);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
125
134
|
}
|
|
126
135
|
}
|
|
127
136
|
|