@pothos/plugin-drizzle 0.18.1 → 0.19.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 +345 -0
- package/README.md +784 -221
- package/dts/connection-helpers.d.ts +18 -8
- package/dts/connection-helpers.d.ts.map +1 -1
- package/dts/drizzle-field-builder.d.ts +4 -11
- package/dts/drizzle-field-builder.d.ts.map +1 -1
- package/dts/global-types.d.ts.map +1 -1
- package/dts/index.d.ts.map +1 -1
- package/dts/model-loader.d.ts +18 -17
- package/dts/model-loader.d.ts.map +1 -1
- package/dts/types.d.ts +80 -20
- package/dts/types.d.ts.map +1 -1
- package/dts/utils/adapter.d.ts +39 -0
- package/dts/utils/adapter.d.ts.map +1 -0
- package/dts/utils/await-selections.d.ts +12 -0
- package/dts/utils/await-selections.d.ts.map +1 -0
- package/dts/utils/config.d.ts +23 -3
- package/dts/utils/config.d.ts.map +1 -1
- package/dts/utils/cursors.d.ts +6 -6
- package/dts/utils/cursors.d.ts.map +1 -1
- package/dts/utils/map-query.d.ts +22 -21
- package/dts/utils/map-query.d.ts.map +1 -1
- package/dts/utils/path-info.d.ts +13 -0
- package/dts/utils/path-info.d.ts.map +1 -0
- package/dts/utils/relation-filter.d.ts +48 -0
- package/dts/utils/relation-filter.d.ts.map +1 -0
- package/dts/utils/selections.d.ts +2 -21
- package/dts/utils/selections.d.ts.map +1 -1
- package/esm/connection-helpers.d.ts +18 -8
- package/esm/connection-helpers.d.ts.map +1 -1
- package/esm/connection-helpers.js +52 -19
- package/esm/connection-helpers.js.map +1 -1
- package/esm/drizzle-field-builder.d.ts +4 -11
- package/esm/drizzle-field-builder.d.ts.map +1 -1
- package/esm/drizzle-field-builder.js +138 -96
- package/esm/drizzle-field-builder.js.map +1 -1
- package/esm/field-builder.js +61 -47
- package/esm/field-builder.js.map +1 -1
- package/esm/global-types.d.ts.map +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +37 -61
- package/esm/index.js.map +1 -1
- package/esm/model-loader.d.ts +18 -17
- package/esm/model-loader.d.ts.map +1 -1
- package/esm/model-loader.js +76 -45
- package/esm/model-loader.js.map +1 -1
- package/esm/schema-builder.js +40 -149
- package/esm/schema-builder.js.map +1 -1
- package/esm/types.d.ts +80 -20
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/adapter.d.ts +39 -0
- package/esm/utils/adapter.d.ts.map +1 -0
- package/esm/utils/adapter.js +137 -0
- package/esm/utils/adapter.js.map +1 -0
- package/esm/utils/await-selections.d.ts +12 -0
- package/esm/utils/await-selections.d.ts.map +1 -0
- package/esm/utils/await-selections.js +19 -0
- package/esm/utils/await-selections.js.map +1 -0
- package/esm/utils/config.d.ts +23 -3
- package/esm/utils/config.d.ts.map +1 -1
- package/esm/utils/config.js +1 -4
- package/esm/utils/config.js.map +1 -1
- package/esm/utils/cursors.d.ts +6 -6
- package/esm/utils/cursors.d.ts.map +1 -1
- package/esm/utils/cursors.js +55 -90
- package/esm/utils/cursors.js.map +1 -1
- package/esm/utils/map-query.d.ts +22 -21
- package/esm/utils/map-query.d.ts.map +1 -1
- package/esm/utils/map-query.js +40 -354
- package/esm/utils/map-query.js.map +1 -1
- package/esm/utils/path-info.d.ts +13 -0
- package/esm/utils/path-info.d.ts.map +1 -0
- package/esm/utils/path-info.js +37 -0
- package/esm/utils/path-info.js.map +1 -0
- package/esm/utils/relation-filter.d.ts +48 -0
- package/esm/utils/relation-filter.d.ts.map +1 -0
- package/esm/utils/relation-filter.js +92 -0
- package/esm/utils/relation-filter.js.map +1 -0
- package/esm/utils/selections.d.ts +2 -21
- package/esm/utils/selections.d.ts.map +1 -1
- package/esm/utils/selections.js +1 -133
- package/esm/utils/selections.js.map +1 -1
- package/lib/connection-helpers.js +51 -18
- package/lib/connection-helpers.js.map +1 -1
- package/lib/drizzle-field-builder.js +136 -94
- package/lib/drizzle-field-builder.js.map +1 -1
- package/lib/field-builder.js +58 -44
- package/lib/field-builder.js.map +1 -1
- package/lib/index.js +36 -60
- package/lib/index.js.map +1 -1
- package/lib/model-loader.js +76 -45
- package/lib/model-loader.js.map +1 -1
- package/lib/schema-builder.js +40 -149
- package/lib/schema-builder.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/adapter.js +147 -0
- package/lib/utils/adapter.js.map +1 -0
- package/lib/utils/await-selections.js +20 -0
- package/lib/utils/await-selections.js.map +1 -0
- package/lib/utils/config.js +1 -4
- package/lib/utils/config.js.map +1 -1
- package/lib/utils/cursors.js +47 -88
- package/lib/utils/cursors.js.map +1 -1
- package/lib/utils/map-query.js +28 -359
- package/lib/utils/map-query.js.map +1 -1
- package/lib/utils/path-info.js +39 -0
- package/lib/utils/path-info.js.map +1 -0
- package/lib/utils/relation-filter.js +91 -0
- package/lib/utils/relation-filter.js.map +1 -0
- package/lib/utils/selections.js +3 -158
- package/lib/utils/selections.js.map +1 -1
- package/package.json +8 -6
- package/src/connection-helpers.ts +167 -53
- package/src/drizzle-field-builder.ts +296 -176
- package/src/field-builder.ts +110 -77
- package/src/global-types.ts +0 -32
- package/src/index.ts +42 -68
- package/src/model-loader.ts +110 -71
- package/src/schema-builder.ts +76 -169
- package/src/types.ts +175 -44
- package/src/utils/adapter.ts +197 -0
- package/src/utils/await-selections.ts +31 -0
- package/src/utils/config.ts +1 -5
- package/src/utils/cursors.ts +53 -81
- package/src/utils/map-query.ts +51 -734
- package/src/utils/path-info.ts +40 -0
- package/src/utils/relation-filter.ts +185 -0
- package/src/utils/selections.ts +2 -207
- package/dts/utils/deep-equal.d.ts +0 -2
- package/dts/utils/deep-equal.d.ts.map +0 -1
- package/dts/utils/drizzle-graphql.d.ts +0 -2
- package/dts/utils/drizzle-graphql.d.ts.map +0 -1
- package/dts/utils/loader-map.d.ts +0 -11
- package/dts/utils/loader-map.d.ts.map +0 -1
- package/dts/utils/usage.d.ts +0 -5
- package/dts/utils/usage.d.ts.map +0 -1
- package/esm/utils/deep-equal.d.ts +0 -2
- package/esm/utils/deep-equal.d.ts.map +0 -1
- package/esm/utils/deep-equal.js +0 -45
- package/esm/utils/deep-equal.js.map +0 -1
- package/esm/utils/drizzle-graphql.d.ts +0 -2
- package/esm/utils/drizzle-graphql.d.ts.map +0 -1
- package/esm/utils/drizzle-graphql.js +0 -232
- package/esm/utils/drizzle-graphql.js.map +0 -1
- package/esm/utils/loader-map.d.ts +0 -11
- package/esm/utils/loader-map.d.ts.map +0 -1
- package/esm/utils/loader-map.js +0 -35
- package/esm/utils/loader-map.js.map +0 -1
- package/esm/utils/usage.d.ts +0 -5
- package/esm/utils/usage.d.ts.map +0 -1
- package/esm/utils/usage.js +0 -59
- package/esm/utils/usage.js.map +0 -1
- package/lib/utils/deep-equal.js +0 -55
- package/lib/utils/deep-equal.js.map +0 -1
- package/lib/utils/drizzle-graphql.js +0 -236
- package/lib/utils/drizzle-graphql.js.map +0 -1
- package/lib/utils/loader-map.js +0 -56
- package/lib/utils/loader-map.js.map +0 -1
- package/lib/utils/usage.js +0 -83
- package/lib/utils/usage.js.map +0 -1
- package/src/utils/deep-equal.ts +0 -57
- package/src/utils/drizzle-graphql.ts +0 -274
- package/src/utils/loader-map.ts +0 -49
- package/src/utils/usage.ts +0 -62
package/lib/utils/map-query.js
CHANGED
|
@@ -9,378 +9,47 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
get
|
|
13
|
-
return
|
|
14
|
-
},
|
|
15
|
-
get normalizeInclude () {
|
|
16
|
-
return normalizeInclude;
|
|
12
|
+
get planFromInfo () {
|
|
13
|
+
return planFromInfo;
|
|
17
14
|
},
|
|
18
15
|
get queryFromInfo () {
|
|
19
16
|
return queryFromInfo;
|
|
20
17
|
},
|
|
21
|
-
get
|
|
22
|
-
return
|
|
23
|
-
},
|
|
24
|
-
get stateFromInfo () {
|
|
25
|
-
return stateFromInfo;
|
|
18
|
+
get queryFromPlan () {
|
|
19
|
+
return queryFromPlan;
|
|
26
20
|
}
|
|
27
21
|
});
|
|
28
22
|
const _core = require("@pothos/core");
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
], indirectPath, (resolvedType, field, path)=>{
|
|
44
|
-
addTypeSelectionsForField(config, resolvedType, context, info, state, field, path, deferred, segments);
|
|
45
|
-
}, deferred);
|
|
46
|
-
} else if (pothosIndirectInclude) {
|
|
47
|
-
addTypeSelectionsForField(config, info.schema.getType(pothosIndirectInclude.getType()), context, info, state, selection, indirectPath, deferred, segments);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (pothosDrizzleSelect) {
|
|
54
|
-
(0, _selections.mergeSelection)(config, state, pothosDrizzleSelect === true ? true : {
|
|
55
|
-
...pothosDrizzleSelect
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
if (selection.selectionSet && (!deferred || !state.skipDeferredFragments)) {
|
|
59
|
-
addNestedSelections(config, type, context, info, state, selection.selectionSet, indirectPath, segments);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function resolveIndirectIncludePaths(type, info, selection, pathPrefix, includePaths, path, resolve, deferred) {
|
|
63
|
-
for (const includePath of includePaths){
|
|
64
|
-
if (pathPrefix.length > 0) {
|
|
65
|
-
resolveIndirectInclude(type, info, selection, [
|
|
66
|
-
...pathPrefix,
|
|
67
|
-
...includePath
|
|
68
|
-
], path, resolve, deferred);
|
|
69
|
-
} else {
|
|
70
|
-
resolveIndirectInclude(type, info, selection, includePath, path, resolve, deferred);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
function resolveIndirectInclude(type, info, selection, includePath, path, resolve, deferred = false) {
|
|
75
|
-
if (includePath.length === 0) {
|
|
76
|
-
resolve(type, selection, path, deferred);
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const [include, ...rest] = includePath;
|
|
80
|
-
if (!selection.selectionSet || !include) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
for (const sel of selection.selectionSet.selections){
|
|
84
|
-
switch(sel.kind){
|
|
85
|
-
case _graphql.Kind.FIELD:
|
|
86
|
-
if (!fieldSkipped(info, sel) && sel.name.value === include.name && ((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
|
|
87
|
-
var _ref;
|
|
88
|
-
var _sel_alias;
|
|
89
|
-
const returnType = (0, _graphql.getNamedType)(type.getFields()[sel.name.value].type);
|
|
90
|
-
resolveIndirectInclude(returnType, info, sel, rest, [
|
|
91
|
-
...path,
|
|
92
|
-
(_ref = (_sel_alias = sel.alias) === null || _sel_alias === void 0 ? void 0 : _sel_alias.value) !== null && _ref !== void 0 ? _ref : sel.name.value
|
|
93
|
-
], resolve, deferred);
|
|
94
|
-
}
|
|
95
|
-
continue;
|
|
96
|
-
case _graphql.Kind.FRAGMENT_SPREAD:
|
|
97
|
-
if (!include.type || info.fragments[sel.name.value].typeCondition.name.value === include.type) {
|
|
98
|
-
resolveIndirectInclude(include.type ? info.schema.getType(include.type) : type, info, info.fragments[sel.name.value], includePath, path, resolve, deferred || isDeferredFragment(sel, info));
|
|
99
|
-
}
|
|
100
|
-
continue;
|
|
101
|
-
case _graphql.Kind.INLINE_FRAGMENT:
|
|
102
|
-
if (!sel.typeCondition || !include.type || sel.typeCondition.name.value === include.type) {
|
|
103
|
-
resolveIndirectInclude(sel.typeCondition ? info.schema.getType(sel.typeCondition.name.value) : type, info, sel, includePath, path, resolve, deferred || isDeferredFragment(sel, info));
|
|
104
|
-
}
|
|
105
|
-
continue;
|
|
106
|
-
default:
|
|
107
|
-
throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// The type to plan a fragment's selections against, or null when the fragment
|
|
112
|
-
// cannot apply to `type`. A fragment on an interface the object implements is
|
|
113
|
-
// planned against the object, whose field map already carries the interface
|
|
114
|
-
// fields and their `select` extensions.
|
|
115
|
-
function typeForFragment(type, condition) {
|
|
116
|
-
var _condition_extensions;
|
|
117
|
-
if ((0, _graphql.isObjectType)(type)) {
|
|
118
|
-
if (condition.name === type.name) {
|
|
119
|
-
return type;
|
|
120
|
-
}
|
|
121
|
-
if ((0, _graphql.isInterfaceType)(condition) && type.getInterfaces().some((iface)=>iface.name === condition.name)) {
|
|
122
|
-
return type;
|
|
123
|
-
}
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
if (((0, _graphql.isObjectType)(condition) || (0, _graphql.isInterfaceType)(condition)) && ((_condition_extensions = condition.extensions) === null || _condition_extensions === void 0 ? void 0 : _condition_extensions.pothosDrizzleModel) === type.extensions.pothosDrizzleModel) {
|
|
127
|
-
return condition;
|
|
23
|
+
const _selectionmapper = require("@pothos/selection-mapper");
|
|
24
|
+
const _adapter = require("./adapter.js");
|
|
25
|
+
function queryFromInfo({ config, select, ...options }) {
|
|
26
|
+
const plan = _selectionmapper.Plan.fromInfo((0, _adapter.drizzleAdapter)(config), {
|
|
27
|
+
...options,
|
|
28
|
+
// A `select` without `columns` merges as "no columns yet", not "every column".
|
|
29
|
+
initial: select ? {
|
|
30
|
+
columns: {},
|
|
31
|
+
...select
|
|
32
|
+
} : undefined
|
|
33
|
+
});
|
|
34
|
+
if (!plan) {
|
|
35
|
+
// Nothing is planned under the paths: the caller gets its own selection back untouched.
|
|
36
|
+
return select !== null && select !== void 0 ? select : {};
|
|
128
37
|
}
|
|
129
|
-
return
|
|
38
|
+
return (0, _core.isThenable)(plan) ? plan.then((settled)=>settled.query()) : plan.query();
|
|
130
39
|
}
|
|
131
|
-
function
|
|
132
|
-
|
|
133
|
-
for (const selection of selections.selections){
|
|
134
|
-
switch(selection.kind){
|
|
135
|
-
case _graphql.Kind.FIELD:
|
|
136
|
-
addFieldSelection(config, type, context, info, state, selection, indirectPath, segments);
|
|
137
|
-
continue;
|
|
138
|
-
case _graphql.Kind.FRAGMENT_SPREAD:
|
|
139
|
-
if (state.skipDeferredFragments && isDeferredFragment(selection, info)) {
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
parentType = typeForFragment(type, info.schema.getType(info.fragments[selection.name.value].typeCondition.name.value));
|
|
143
|
-
if (!parentType) {
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
addNestedSelections(config, parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath, segments);
|
|
147
|
-
continue;
|
|
148
|
-
case _graphql.Kind.INLINE_FRAGMENT:
|
|
149
|
-
if (state.skipDeferredFragments && isDeferredFragment(selection, info)) {
|
|
150
|
-
continue;
|
|
151
|
-
}
|
|
152
|
-
parentType = selection.typeCondition ? typeForFragment(type, info.schema.getType(selection.typeCondition.name.value)) : type;
|
|
153
|
-
if (!parentType) {
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
addNestedSelections(config, parentType, context, info, state, selection.selectionSet, indirectPath, segments);
|
|
157
|
-
continue;
|
|
158
|
-
default:
|
|
159
|
-
throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
40
|
+
function planFromInfo({ config, ...options }) {
|
|
41
|
+
return _selectionmapper.Plan.fromInfo((0, _adapter.drizzleAdapter)(config), options);
|
|
162
42
|
}
|
|
163
|
-
function
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
const field = type.getFields()[selection.name.value];
|
|
170
|
-
if (!field) {
|
|
171
|
-
throw new _core.PothosValidationError(`Unknown field ${selection.name.value} on ${type.name}`);
|
|
172
|
-
}
|
|
173
|
-
const allSegments = [
|
|
174
|
-
...segments,
|
|
175
|
-
{
|
|
176
|
-
field: selection.name.value,
|
|
177
|
-
alias: (_ref = (_selection_alias = selection.alias) === null || _selection_alias === void 0 ? void 0 : _selection_alias.value) !== null && _ref !== void 0 ? _ref : selection.name.value,
|
|
178
|
-
parentType: type.name,
|
|
179
|
-
isList: (0, _graphql.isListType)(field.type) || (0, _graphql.isListType)((0, _graphql.getNamedType)(field.type))
|
|
180
|
-
}
|
|
181
|
-
];
|
|
182
|
-
const fieldSelect = (_field_extensions = field.extensions) === null || _field_extensions === void 0 ? void 0 : _field_extensions.pothosDrizzleSelect;
|
|
183
|
-
let fieldSelectionMap;
|
|
184
|
-
let mappings = {};
|
|
185
|
-
if (typeof fieldSelect === 'function') {
|
|
186
|
-
const pathInfo = {
|
|
187
|
-
path: allSegments.map((s)=>`${s.parentType}.${s.field}`),
|
|
188
|
-
segments: allSegments
|
|
189
|
-
};
|
|
190
|
-
const args = (0, _core.getMappedArgumentValues)(field, selection, context, info);
|
|
191
|
-
fieldSelectionMap = fieldSelect(args, context, (rawQuery, indirectInclude, expectedType)=>{
|
|
192
|
-
const returnType = (0, _graphql.getNamedType)(field.type);
|
|
193
|
-
const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;
|
|
194
|
-
const normalizedIndirectInclude = Array.isArray(indirectInclude) ? normalizeInclude(indirectInclude, getIndirectType(returnType, info), expectedType ? (0, _graphql.getNamedType)(info.schema.getType(expectedType)) : undefined) : indirectInclude;
|
|
195
|
-
const fieldState = createStateForSelection(config, info, normalizedIndirectInclude ? info.schema.getType(normalizedIndirectInclude.getType()) : returnType, state);
|
|
196
|
-
if (typeof query === 'object' && Object.keys(query).length > 0) {
|
|
197
|
-
(0, _selections.mergeSelection)(config, fieldState, {
|
|
198
|
-
columns: {},
|
|
199
|
-
...query
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
if (!!(normalizedIndirectInclude === null || normalizedIndirectInclude === void 0 ? void 0 : normalizedIndirectInclude.path) && normalizedIndirectInclude.path.length > 0 || !!(normalizedIndirectInclude === null || normalizedIndirectInclude === void 0 ? void 0 : normalizedIndirectInclude.paths) && normalizedIndirectInclude.paths.length > 0) {
|
|
203
|
-
var _ref, _normalizedIndirectInclude_paths;
|
|
204
|
-
var _returnType_extensions_pothosIndirectInclude, _returnType_extensions;
|
|
205
|
-
resolveIndirectIncludePaths(returnType, info, selection, (_ref = (_returnType_extensions = returnType.extensions) === null || _returnType_extensions === void 0 ? void 0 : (_returnType_extensions_pothosIndirectInclude = _returnType_extensions.pothosIndirectInclude) === null || _returnType_extensions_pothosIndirectInclude === void 0 ? void 0 : _returnType_extensions_pothosIndirectInclude.path) !== null && _ref !== void 0 ? _ref : [], (_normalizedIndirectInclude_paths = normalizedIndirectInclude.paths) !== null && _normalizedIndirectInclude_paths !== void 0 ? _normalizedIndirectInclude_paths : [
|
|
206
|
-
normalizedIndirectInclude.path
|
|
207
|
-
], [], (resolvedType, resolvedField, path, deferred)=>{
|
|
208
|
-
addTypeSelectionsForField(config, resolvedType, context, info, fieldState, resolvedField, path, deferred, allSegments);
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
addTypeSelectionsForField(config, returnType, context, info, fieldState, selection, [], undefined, allSegments);
|
|
212
|
-
mappings = fieldState.mappings;
|
|
213
|
-
return (0, _selections.selectionToQuery)(config, fieldState);
|
|
214
|
-
}, (path)=>{
|
|
215
|
-
const returnType = (0, _graphql.getNamedType)(field.type);
|
|
216
|
-
let node = null;
|
|
217
|
-
resolveIndirectInclude(returnType, info, selection, path.map((name)=>({
|
|
218
|
-
name
|
|
219
|
-
})), [], (_, resolvedField)=>{
|
|
220
|
-
node = resolvedField;
|
|
221
|
-
});
|
|
222
|
-
return node;
|
|
223
|
-
}, pathInfo);
|
|
224
|
-
} else {
|
|
225
|
-
fieldSelectionMap = fieldSelect;
|
|
43
|
+
function queryFromPlan(plan, select) {
|
|
44
|
+
if (!plan) {
|
|
45
|
+
// Nothing is selected under the paths: the caller gets its own selection back.
|
|
46
|
+
return select !== null && select !== void 0 ? select : {};
|
|
226
47
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
var _selection_alias1;
|
|
230
|
-
(0, _selections.mergeSelection)(config, state, fieldSelectionMap);
|
|
231
|
-
state.mappings = mergeMappings(state.mappings, {
|
|
232
|
-
[(_ref1 = (_selection_alias1 = selection.alias) === null || _selection_alias1 === void 0 ? void 0 : _selection_alias1.value) !== null && _ref1 !== void 0 ? _ref1 : selection.name.value]: {
|
|
233
|
-
field: selection.name.value,
|
|
234
|
-
type: type.name,
|
|
235
|
-
mappings,
|
|
236
|
-
indirectPath
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
function mergeMappings(existing, incoming) {
|
|
242
|
-
const result = {
|
|
243
|
-
...existing
|
|
244
|
-
};
|
|
245
|
-
for (const [key, value] of Object.entries(incoming)){
|
|
246
|
-
if (result[key]) {
|
|
247
|
-
result[key] = {
|
|
248
|
-
...result[key],
|
|
249
|
-
mappings: mergeMappings(result[key].mappings, value.mappings)
|
|
250
|
-
};
|
|
251
|
-
} else {
|
|
252
|
-
result[key] = value;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return result;
|
|
256
|
-
}
|
|
257
|
-
function queryFromInfo({ withUsageCheck, ...options }) {
|
|
258
|
-
const state = stateFromInfo(options);
|
|
259
|
-
(0, _loadermap.setLoaderMappings)(options.context, options.info, state.mappings);
|
|
260
|
-
const query = (0, _selections.selectionToQuery)(options.config, state);
|
|
261
|
-
return withUsageCheck ? (0, _usage.wrapWithUsageCheck)(query) : query;
|
|
262
|
-
}
|
|
263
|
-
function stateFromInfo({ config, context, info, typeName, select, path = [], paths = [] }) {
|
|
264
|
-
const returnType = (0, _graphql.getNamedType)(info.returnType);
|
|
265
|
-
const type = typeName ? info.schema.getTypeMap()[typeName] : returnType;
|
|
266
|
-
const initialSelection = select ? {
|
|
48
|
+
// A `select` without `columns` merges as "no columns yet", not "every column".
|
|
49
|
+
return plan.query(select ? {
|
|
267
50
|
columns: {},
|
|
268
51
|
...select
|
|
269
|
-
} : undefined;
|
|
270
|
-
let state;
|
|
271
|
-
if (path.length > 0 || paths.length > 0) {
|
|
272
|
-
var _returnType_extensions, _ref;
|
|
273
|
-
const { pothosIndirectInclude } = (_returnType_extensions = returnType.extensions) !== null && _returnType_extensions !== void 0 ? _returnType_extensions : {};
|
|
274
|
-
resolveIndirectInclude(returnType, info, info.fieldNodes[0], (_ref = pothosIndirectInclude === null || pothosIndirectInclude === void 0 ? void 0 : pothosIndirectInclude.path) !== null && _ref !== void 0 ? _ref : [], [], (indirectType, indirectField, subPath, deferred)=>{
|
|
275
|
-
resolveIndirectIncludePaths(indirectType, info, indirectField, [], paths.length > 0 ? paths.map((p)=>p.map((n)=>typeof n === 'string' ? {
|
|
276
|
-
name: n
|
|
277
|
-
} : n)) : [
|
|
278
|
-
path.map((n)=>typeof n === 'string' ? {
|
|
279
|
-
name: n
|
|
280
|
-
} : n)
|
|
281
|
-
], subPath, (resolvedType, resolvedField, nested, deferred)=>{
|
|
282
|
-
state = createStateForSelection(config, info, resolvedType, undefined, initialSelection);
|
|
283
|
-
addTypeSelectionsForField(config, typeName ? type : resolvedType, context, info, state, resolvedField, nested, deferred);
|
|
284
|
-
}, deferred);
|
|
285
|
-
});
|
|
286
|
-
} else {
|
|
287
|
-
var _ref1;
|
|
288
|
-
var _rootFieldNode_alias;
|
|
289
|
-
state = createStateForSelection(config, info, type, undefined, initialSelection);
|
|
290
|
-
// Create initial segment for the root query field
|
|
291
|
-
const rootFieldNode = info.fieldNodes[0];
|
|
292
|
-
const rootField = info.parentType.getFields()[rootFieldNode.name.value];
|
|
293
|
-
const initialSegments = rootField ? [
|
|
294
|
-
{
|
|
295
|
-
field: rootFieldNode.name.value,
|
|
296
|
-
alias: (_ref1 = (_rootFieldNode_alias = rootFieldNode.alias) === null || _rootFieldNode_alias === void 0 ? void 0 : _rootFieldNode_alias.value) !== null && _ref1 !== void 0 ? _ref1 : rootFieldNode.name.value,
|
|
297
|
-
parentType: info.parentType.name,
|
|
298
|
-
isList: (0, _graphql.isListType)(rootField.type) || (0, _graphql.isListType)((0, _graphql.getNamedType)(rootField.type))
|
|
299
|
-
}
|
|
300
|
-
] : [];
|
|
301
|
-
addTypeSelectionsForField(config, type, context, info, state, info.fieldNodes[0], [], undefined, initialSegments);
|
|
302
|
-
}
|
|
303
|
-
if (!state) {
|
|
304
|
-
state = createStateForSelection(config, info, type, undefined, initialSelection);
|
|
305
|
-
}
|
|
306
|
-
return state;
|
|
307
|
-
}
|
|
308
|
-
function selectionStateFromInfo(config, context, info, typeName) {
|
|
309
|
-
const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
|
|
310
|
-
const state = createStateForSelection(config, info, type);
|
|
311
|
-
if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
|
|
312
|
-
throw new _core.PothosValidationError('Drizzle plugin can only resolve selections for object and interface types');
|
|
313
|
-
}
|
|
314
|
-
addFieldSelection(config, type, context, info, state, info.fieldNodes[0], []);
|
|
315
|
-
return state;
|
|
316
|
-
}
|
|
317
|
-
function createStateForSelection(config, info, type, parent, initialSelections) {
|
|
318
|
-
var _targetType_extensions, _ref;
|
|
319
|
-
const targetType = getIndirectType(type, info);
|
|
320
|
-
const { pothosDrizzleTable } = (_targetType_extensions = targetType.extensions) !== null && _targetType_extensions !== void 0 ? _targetType_extensions : {};
|
|
321
|
-
if (!pothosDrizzleTable) {
|
|
322
|
-
throw new _core.PothosValidationError(`Expected ${targetType.name} to have a table config`);
|
|
323
|
-
}
|
|
324
|
-
const state = (0, _selections.createState)(pothosDrizzleTable, (_ref = parent === null || parent === void 0 ? void 0 : parent.skipDeferredFragments) !== null && _ref !== void 0 ? _ref : config.skipDeferredFragments, parent);
|
|
325
|
-
if (initialSelections) {
|
|
326
|
-
(0, _selections.mergeSelection)(config, state, initialSelections);
|
|
327
|
-
}
|
|
328
|
-
return state;
|
|
329
|
-
}
|
|
330
|
-
function getIndirectType(type, info) {
|
|
331
|
-
var _targetType_extensions;
|
|
332
|
-
let targetType = type;
|
|
333
|
-
while((_targetType_extensions = targetType.extensions) === null || _targetType_extensions === void 0 ? void 0 : _targetType_extensions.pothosIndirectInclude){
|
|
334
|
-
targetType = info.schema.getType(targetType.extensions.pothosIndirectInclude.getType());
|
|
335
|
-
}
|
|
336
|
-
return targetType;
|
|
337
|
-
}
|
|
338
|
-
function normalizeInclude(path, type, expectedType) {
|
|
339
|
-
let currentType = path.length > 0 ? type : expectedType !== null && expectedType !== void 0 ? expectedType : type;
|
|
340
|
-
const normalized = [];
|
|
341
|
-
if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
|
|
342
|
-
throw new _core.PothosValidationError(`Expected ${currentType} to be an Object type`);
|
|
343
|
-
}
|
|
344
|
-
for (const fieldName of path){
|
|
345
|
-
const field = currentType.getFields()[fieldName];
|
|
346
|
-
if (!field) {
|
|
347
|
-
throw new _core.PothosValidationError(`Expected ${currentType} to have a field ${fieldName}`);
|
|
348
|
-
}
|
|
349
|
-
currentType = (0, _graphql.getNamedType)(field.type);
|
|
350
|
-
if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
|
|
351
|
-
throw new _core.PothosValidationError(`Expected ${currentType} to be an Object or Interface type`);
|
|
352
|
-
}
|
|
353
|
-
normalized.push({
|
|
354
|
-
name: fieldName,
|
|
355
|
-
type: currentType.name
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
return {
|
|
359
|
-
getType: ()=>{
|
|
360
|
-
var _ref;
|
|
361
|
-
return (_ref = expectedType === null || expectedType === void 0 ? void 0 : expectedType.name) !== null && _ref !== void 0 ? _ref : normalized.length > 0 ? normalized[normalized.length - 1].type : type.name;
|
|
362
|
-
},
|
|
363
|
-
path: normalized
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
function fieldSkipped(info, selection) {
|
|
367
|
-
const skip = (0, _graphql.getDirectiveValues)(_graphql.GraphQLSkipDirective, selection, info.variableValues);
|
|
368
|
-
if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {
|
|
369
|
-
return true;
|
|
370
|
-
}
|
|
371
|
-
const include = (0, _graphql.getDirectiveValues)(_graphql.GraphQLIncludeDirective, selection, info.variableValues);
|
|
372
|
-
if ((include === null || include === void 0 ? void 0 : include.if) === false) {
|
|
373
|
-
return true;
|
|
374
|
-
}
|
|
375
|
-
return false;
|
|
376
|
-
}
|
|
377
|
-
function isDeferredFragment(node, info) {
|
|
378
|
-
const deferDirective = info.schema.getDirective('defer');
|
|
379
|
-
if (!deferDirective) {
|
|
380
|
-
return false;
|
|
381
|
-
}
|
|
382
|
-
const defer = (0, _graphql.getDirectiveValues)(deferDirective, node, info.variableValues);
|
|
383
|
-
return !!defer && defer.if !== false;
|
|
52
|
+
} : undefined);
|
|
384
53
|
}
|
|
385
54
|
|
|
386
55
|
//# sourceMappingURL=map-query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/map-query.ts"],"names":["getIndirectType","normalizeInclude","queryFromInfo","selectionStateFromInfo","stateFromInfo","addTypeSelectionsForField","config","type","context","info","state","selection","indirectPath","deferred","segments","name","value","startsWith","pothosDrizzleSelect","pothosIndirectInclude","extensions","path","length","paths","resolveIndirectIncludePaths","resolvedType","field","schema","getType","isObjectType","isInterfaceType","mergeSelection","selectionSet","skipDeferredFragments","addNestedSelections","pathPrefix","includePaths","resolve","includePath","resolveIndirectInclude","include","rest","sel","selections","kind","Kind","FIELD","fieldSkipped","returnType","getNamedType","getFields","alias","FRAGMENT_SPREAD","fragments","typeCondition","isDeferredFragment","INLINE_FRAGMENT","PothosValidationError","typeForFragment","condition","getInterfaces","some","iface","pothosDrizzleModel","parentType","addFieldSelection","allSegments","isList","isListType","fieldSelect","fieldSelectionMap","mappings","pathInfo","map","s","args","getMappedArgumentValues","rawQuery","indirectInclude","expectedType","query","normalizedIndirectInclude","Array","isArray","undefined","fieldState","createStateForSelection","Object","keys","columns","resolvedField","selectionToQuery","node","_","selectionCompatible","mergeMappings","existing","incoming","result","key","entries","withUsageCheck","options","setLoaderMappings","wrapWithUsageCheck","typeName","select","getTypeMap","initialSelection","fieldNodes","indirectType","indirectField","subPath","p","n","nested","rootFieldNode","rootField","initialSegments","parent","initialSelections","targetType","pothosDrizzleTable","createState","currentType","normalized","fieldName","push","skip","getDirectiveValues","GraphQLSkipDirective","variableValues","if","GraphQLIncludeDirective","deferDirective","getDirective","defer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/map-query.ts"],"names":["planFromInfo","queryFromInfo","queryFromPlan","config","select","options","plan","Plan","fromInfo","drizzleAdapter","initial","columns","undefined","isThenable","then","settled","query"],"mappings":";;;;;;;;;;;QA4CgBA;eAAAA;;QA3BAC;eAAAA;;QAyCAC;eAAAA;;;sBA1DW;iCACY;yBAEU;AAc1C,SAASD,cAAsC,EACpDE,MAAM,EACNC,MAAM,EACN,GAAGC,SACqB;IACxB,MAAMC,OAAOC,qBAAI,CAACC,QAAQ,CAACC,IAAAA,uBAAc,EAACN,SAAS;QACjD,GAAGE,OAAO;QACV,+EAA+E;QAC/EK,SAASN,SAAS;YAAEO,SAAS,CAAC;YAAG,GAAGP,MAAM;QAAC,IAAIQ;IACjD;IAEA,IAAI,CAACN,MAAM;QACT,wFAAwF;QACxF,OAAQF,mBAAAA,oBAAAA,SAAU,CAAC;IACrB;IAEA,OACES,IAAAA,gBAAU,EAACP,QAAQA,KAAKQ,IAAI,CAAC,CAACC,UAAY,AAACA,QAAwBC,KAAK,MAAMV,KAAKU,KAAK;AAE5F;AAQO,SAAShB,aAAa,EAC3BG,MAAM,EACN,GAAGE,SACgD;IACnD,OAAOE,qBAAI,CAACC,QAAQ,CAACC,IAAAA,uBAAc,EAACN,SAASE;AAC/C;AASO,SAASH,cACdI,IAA6B,EAC7BF,MAAU;IAEV,IAAI,CAACE,MAAM;QACT,+EAA+E;QAC/E,OAAQF,mBAAAA,oBAAAA,SAAU,CAAC;IACrB;IAEA,+EAA+E;IAC/E,OAAOE,KAAKU,KAAK,CAACZ,SAAS;QAAEO,SAAS,CAAC;QAAG,GAAGP,MAAM;IAAC,IAAIQ;AAC1D"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "pathInfoFor", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return pathInfoFor;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _graphql = require("graphql");
|
|
12
|
+
function pathInfoFor(position) {
|
|
13
|
+
if (!position) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const path = [];
|
|
17
|
+
const segments = [];
|
|
18
|
+
for(let at = position; at; at = at.parent){
|
|
19
|
+
var _ref;
|
|
20
|
+
var _at_node_alias;
|
|
21
|
+
const field = at.node.name.value;
|
|
22
|
+
path.push(`${at.type.name}.${field}`);
|
|
23
|
+
segments.push({
|
|
24
|
+
field,
|
|
25
|
+
alias: (_ref = (_at_node_alias = at.node.alias) === null || _at_node_alias === void 0 ? void 0 : _at_node_alias.value) !== null && _ref !== void 0 ? _ref : field,
|
|
26
|
+
parentType: at.type.name,
|
|
27
|
+
isList: isListField(at.field.type)
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
path: path.reverse(),
|
|
32
|
+
segments: segments.reverse()
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** A list field, whether or not the list itself is non-null (`[Post!]!`). */ function isListField(type) {
|
|
36
|
+
return (0, _graphql.isListType)(type) || (0, _graphql.isNonNullType)(type) && (0, _graphql.isListType)(type.ofType);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=path-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/path-info.ts"],"names":["pathInfoFor","position","undefined","path","segments","at","parent","field","node","name","value","push","type","alias","parentType","isList","isListField","reverse","isListType","isNonNullType","ofType"],"mappings":";;;;+BAagBA;;;eAAAA;;;yBAZkD;AAY3D,SAASA,YAAYC,QAA8B;IACxD,IAAI,CAACA,UAAU;QACb,OAAOC;IACT;IAEA,MAAMC,OAAiB,EAAE;IACzB,MAAMC,WAA4B,EAAE;IAEpC,IAAK,IAAIC,KAA2BJ,UAAUI,IAAIA,KAAKA,GAAGC,MAAM,CAAE;;YAMvDD;QALT,MAAME,QAAQF,GAAGG,IAAI,CAACC,IAAI,CAACC,KAAK;QAEhCP,KAAKQ,IAAI,CAAC,GAAGN,GAAGO,IAAI,CAACH,IAAI,CAAC,CAAC,EAAEF,OAAO;QACpCH,SAASO,IAAI,CAAC;YACZJ;YACAM,KAAK,WAAER,iBAAAA,GAAGG,IAAI,CAACK,KAAK,cAAbR,qCAAAA,eAAeK,KAAK,uCAAIH;YAC/BO,YAAYT,GAAGO,IAAI,CAACH,IAAI;YACxBM,QAAQC,YAAYX,GAAGE,KAAK,CAACK,IAAI;QACnC;IACF;IAEA,OAAO;QAAET,MAAMA,KAAKc,OAAO;QAAIb,UAAUA,SAASa,OAAO;IAAG;AAC9D;AAEA,2EAA2E,GAC3E,SAASD,YAAYJ,IAAuB;IAC1C,OAAOM,IAAAA,mBAAU,EAACN,SAAUO,IAAAA,sBAAa,EAACP,SAASM,IAAAA,mBAAU,EAACN,KAAKQ,MAAM;AAC3E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "buildRelationFilter", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return buildRelationFilter;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _drizzleorm = require("drizzle-orm");
|
|
12
|
+
const _sqlitecore = require("drizzle-orm/sqlite-core");
|
|
13
|
+
// `select 1`, for an `exists` that only has to find a row.
|
|
14
|
+
const one = {
|
|
15
|
+
one: (0, _drizzleorm.sql)`1`
|
|
16
|
+
};
|
|
17
|
+
function buildRelationFilter(client, relation, parentTable, targetKey) {
|
|
18
|
+
const targetTable = relation.targetTable;
|
|
19
|
+
const throughTable = relation.throughTable;
|
|
20
|
+
// `filter` correlates the parent to the target, or to the junction table when there is one, in
|
|
21
|
+
// which case `joinCondition` is what carries the junction the rest of the way to the target.
|
|
22
|
+
const { filter, joinCondition } = (0, _drizzleorm.relationToSQL)(relation, parentTable, targetTable, throughTable);
|
|
23
|
+
if (!throughTable || !joinCondition) {
|
|
24
|
+
// Without a junction table every related row is a distinct target row, so the two counts are
|
|
25
|
+
// the same query.
|
|
26
|
+
const countRows = (where)=>countOf(client.select(countStar()).from(targetTable).where((0, _drizzleorm.and)(where, filter)));
|
|
27
|
+
return {
|
|
28
|
+
filter,
|
|
29
|
+
countRows,
|
|
30
|
+
countDistinctRows: (_key, where)=>countRows(where)
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const relatedRows = (aggregate, where)=>countOf(client.select(aggregate).from(targetTable).innerJoin(throughTable, joinCondition).where((0, _drizzleorm.and)(where, filter)));
|
|
34
|
+
return {
|
|
35
|
+
// SQLite needs the identity lookup to avoid target scans. PostgreSQL can plan EXISTS as
|
|
36
|
+
// a semijoin; projecting identities adds a target join its planner may not eliminate.
|
|
37
|
+
filter: (targetKey === null || targetKey === void 0 ? void 0 : targetKey.length) && (0, _drizzleorm.is)(targetTable, _sqlitecore.SQLiteTable) ? targetIdentityInRelation(client, relation, parentTable, targetTable, throughTable, targetKey) : (0, _drizzleorm.exists)(client.select(one).from(throughTable).where((0, _drizzleorm.and)(filter, joinCondition))),
|
|
38
|
+
countRows: (where)=>relatedRows(countStar(), where),
|
|
39
|
+
countDistinctRows: (key, where)=>relatedRows({
|
|
40
|
+
count: (0, _drizzleorm.countDistinct)(key)
|
|
41
|
+
}, where)
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Project a non-null unique target key through the original relation join, then compare that
|
|
46
|
+
* key with itself. Comparing the target key directly with a junction column would change
|
|
47
|
+
* SQLite's collation precedence. Keeping the join also handles composite relation keys and
|
|
48
|
+
* excludes null junction keys without special truth-table guards.
|
|
49
|
+
*
|
|
50
|
+
* `key` must be a database-enforced unique constraint whose columns are all NOT NULL. That
|
|
51
|
+
* makes membership identify exactly one target row and keeps negation two-valued. SQLite can
|
|
52
|
+
* allow nulls even in primary keys, so callers must check notNull, not just primary.
|
|
53
|
+
*
|
|
54
|
+
* Build object restrictions and RAW callbacks against the inner target alias. Static RAW SQL
|
|
55
|
+
* is passed through by Drizzle: references to the outer target can still force a target scan.
|
|
56
|
+
* A RAW callback must use its supplied table to benefit from the identity lookup.
|
|
57
|
+
*/ function targetIdentityInRelation(client, relation, parentTable, targetTable, throughTable, key) {
|
|
58
|
+
const names = new Set([
|
|
59
|
+
parentTable,
|
|
60
|
+
targetTable,
|
|
61
|
+
throughTable
|
|
62
|
+
].map(_drizzleorm.getTableName));
|
|
63
|
+
let alias = '_pothos_related';
|
|
64
|
+
while(names.has(alias)){
|
|
65
|
+
alias += '_';
|
|
66
|
+
}
|
|
67
|
+
const matchedTable = (0, _drizzleorm.aliasedTable)(targetTable, alias);
|
|
68
|
+
const { filter, joinCondition } = (0, _drizzleorm.relationToSQL)(relation, parentTable, matchedTable, throughTable);
|
|
69
|
+
const fields = Object.fromEntries(key.map((column, i)=>[
|
|
70
|
+
String(i),
|
|
71
|
+
(0, _drizzleorm.sql)`${(0, _drizzleorm.aliasedTableColumn)(column, alias)}`
|
|
72
|
+
]));
|
|
73
|
+
const columns = key.map((column)=>(0, _drizzleorm.sql)`${column}`);
|
|
74
|
+
const identity = columns.length === 1 ? columns[0] : (0, _drizzleorm.sql)`(${_drizzleorm.sql.join(columns, (0, _drizzleorm.sql)`, `)})`;
|
|
75
|
+
return (0, _drizzleorm.inArray)(identity, client.select(fields).from(throughTable).innerJoin(matchedTable, joinCondition).where(filter));
|
|
76
|
+
}
|
|
77
|
+
// A fresh `count(*)` each time: `mapWith` mutates the `SQL` it is called on, so a shared one
|
|
78
|
+
// would be re-decoded by every query that selected it.
|
|
79
|
+
function countStar() {
|
|
80
|
+
return {
|
|
81
|
+
count: (0, _drizzleorm.count)()
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// The count as a value the surrounding query can select. `count()` carries drizzle's `Number`
|
|
85
|
+
// decoder, but a `select` built around it decodes as the row it returns, so the mapping is
|
|
86
|
+
// restored here and the count comes back as a number on every dialect.
|
|
87
|
+
function countOf(rows) {
|
|
88
|
+
return (0, _drizzleorm.sql)`${rows.getSQL()}`.mapWith(Number);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=relation-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/relation-filter.ts"],"names":["buildRelationFilter","one","sql","client","relation","parentTable","targetKey","targetTable","throughTable","filter","joinCondition","relationToSQL","countRows","where","countOf","select","countStar","from","and","countDistinctRows","_key","relatedRows","aggregate","innerJoin","length","is","SQLiteTable","targetIdentityInRelation","exists","key","count","countDistinct","names","Set","map","getTableName","alias","has","matchedTable","aliasedTable","fields","Object","fromEntries","column","i","String","aliasedTableColumn","columns","identity","join","inArray","rows","getSQL","mapWith","Number"],"mappings":"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"}
|