@pothos/plugin-drizzle 0.18.0 → 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 +351 -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 +81 -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 +81 -20
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js +1 -0
- 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 -336
- 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 +4 -0
- 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 -341
- 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 +176 -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 -708
- 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,360 +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
|
-
function addNestedSelections(config, type, context, info, state, selections, indirectPath, segments = []) {
|
|
112
|
-
let parentType = type;
|
|
113
|
-
for (const selection of selections.selections){
|
|
114
|
-
switch(selection.kind){
|
|
115
|
-
case _graphql.Kind.FIELD:
|
|
116
|
-
addFieldSelection(config, type, context, info, state, selection, indirectPath, segments);
|
|
117
|
-
continue;
|
|
118
|
-
case _graphql.Kind.FRAGMENT_SPREAD:
|
|
119
|
-
var _parentType_extensions;
|
|
120
|
-
if (state.skipDeferredFragments && isDeferredFragment(selection, info)) {
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
parentType = info.schema.getType(info.fragments[selection.name.value].typeCondition.name.value);
|
|
124
|
-
if ((0, _graphql.isObjectType)(type) ? parentType.name !== type.name : ((_parentType_extensions = parentType.extensions) === null || _parentType_extensions === void 0 ? void 0 : _parentType_extensions.pothosDrizzleModel) !== type.extensions.pothosDrizzleModel) {
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
addNestedSelections(config, parentType, context, info, state, info.fragments[selection.name.value].selectionSet, indirectPath, segments);
|
|
128
|
-
continue;
|
|
129
|
-
case _graphql.Kind.INLINE_FRAGMENT:
|
|
130
|
-
var _parentType_extensions1;
|
|
131
|
-
if (state.skipDeferredFragments && isDeferredFragment(selection, info)) {
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
parentType = selection.typeCondition ? info.schema.getType(selection.typeCondition.name.value) : type;
|
|
135
|
-
if ((0, _graphql.isObjectType)(type) ? parentType.name !== type.name : ((_parentType_extensions1 = parentType.extensions) === null || _parentType_extensions1 === void 0 ? void 0 : _parentType_extensions1.pothosDrizzleModel) !== type.extensions.pothosDrizzleModel) {
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
addNestedSelections(config, parentType, context, info, state, selection.selectionSet, indirectPath, segments);
|
|
139
|
-
continue;
|
|
140
|
-
default:
|
|
141
|
-
throw new _core.PothosValidationError(`Unsupported selection kind ${selection.kind}`);
|
|
142
|
-
}
|
|
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 : {};
|
|
143
37
|
}
|
|
38
|
+
return (0, _core.isThenable)(plan) ? plan.then((settled)=>settled.query()) : plan.query();
|
|
144
39
|
}
|
|
145
|
-
function
|
|
146
|
-
|
|
147
|
-
var _selection_alias, _field_extensions;
|
|
148
|
-
if (selection.name.value.startsWith('__') || fieldSkipped(info, selection)) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
const field = type.getFields()[selection.name.value];
|
|
152
|
-
if (!field) {
|
|
153
|
-
throw new _core.PothosValidationError(`Unknown field ${selection.name.value} on ${type.name}`);
|
|
154
|
-
}
|
|
155
|
-
const allSegments = [
|
|
156
|
-
...segments,
|
|
157
|
-
{
|
|
158
|
-
field: selection.name.value,
|
|
159
|
-
alias: (_ref = (_selection_alias = selection.alias) === null || _selection_alias === void 0 ? void 0 : _selection_alias.value) !== null && _ref !== void 0 ? _ref : selection.name.value,
|
|
160
|
-
parentType: type.name,
|
|
161
|
-
isList: (0, _graphql.isListType)(field.type) || (0, _graphql.isListType)((0, _graphql.getNamedType)(field.type))
|
|
162
|
-
}
|
|
163
|
-
];
|
|
164
|
-
const fieldSelect = (_field_extensions = field.extensions) === null || _field_extensions === void 0 ? void 0 : _field_extensions.pothosDrizzleSelect;
|
|
165
|
-
let fieldSelectionMap;
|
|
166
|
-
let mappings = {};
|
|
167
|
-
if (typeof fieldSelect === 'function') {
|
|
168
|
-
const pathInfo = {
|
|
169
|
-
path: allSegments.map((s)=>`${s.parentType}.${s.field}`),
|
|
170
|
-
segments: allSegments
|
|
171
|
-
};
|
|
172
|
-
const args = (0, _core.getMappedArgumentValues)(field, selection, context, info);
|
|
173
|
-
fieldSelectionMap = fieldSelect(args, context, (rawQuery, indirectInclude, expectedType)=>{
|
|
174
|
-
const returnType = (0, _graphql.getNamedType)(field.type);
|
|
175
|
-
const query = typeof rawQuery === 'function' ? rawQuery(args, context) : rawQuery;
|
|
176
|
-
const normalizedIndirectInclude = Array.isArray(indirectInclude) ? normalizeInclude(indirectInclude, getIndirectType(returnType, info), expectedType ? (0, _graphql.getNamedType)(info.schema.getType(expectedType)) : undefined) : indirectInclude;
|
|
177
|
-
const fieldState = createStateForSelection(config, info, normalizedIndirectInclude ? info.schema.getType(normalizedIndirectInclude.getType()) : returnType, state);
|
|
178
|
-
if (typeof query === 'object' && Object.keys(query).length > 0) {
|
|
179
|
-
(0, _selections.mergeSelection)(config, fieldState, {
|
|
180
|
-
columns: {},
|
|
181
|
-
...query
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
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) {
|
|
185
|
-
var _ref, _normalizedIndirectInclude_paths;
|
|
186
|
-
var _returnType_extensions_pothosIndirectInclude, _returnType_extensions;
|
|
187
|
-
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 : [
|
|
188
|
-
normalizedIndirectInclude.path
|
|
189
|
-
], [], (resolvedType, resolvedField, path, deferred)=>{
|
|
190
|
-
addTypeSelectionsForField(config, resolvedType, context, info, fieldState, resolvedField, path, deferred, allSegments);
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
addTypeSelectionsForField(config, returnType, context, info, fieldState, selection, [], undefined, allSegments);
|
|
194
|
-
mappings = fieldState.mappings;
|
|
195
|
-
return (0, _selections.selectionToQuery)(config, fieldState);
|
|
196
|
-
}, (path)=>{
|
|
197
|
-
const returnType = (0, _graphql.getNamedType)(field.type);
|
|
198
|
-
let node = null;
|
|
199
|
-
resolveIndirectInclude(returnType, info, selection, path.map((name)=>({
|
|
200
|
-
name
|
|
201
|
-
})), [], (_, resolvedField)=>{
|
|
202
|
-
node = resolvedField;
|
|
203
|
-
});
|
|
204
|
-
return node;
|
|
205
|
-
}, pathInfo);
|
|
206
|
-
} else {
|
|
207
|
-
fieldSelectionMap = fieldSelect;
|
|
208
|
-
}
|
|
209
|
-
if (fieldSelect && (0, _selections.selectionCompatible)(state, fieldSelectionMap, true)) {
|
|
210
|
-
var _ref1;
|
|
211
|
-
var _selection_alias1;
|
|
212
|
-
(0, _selections.mergeSelection)(config, state, fieldSelectionMap);
|
|
213
|
-
state.mappings = mergeMappings(state.mappings, {
|
|
214
|
-
[(_ref1 = (_selection_alias1 = selection.alias) === null || _selection_alias1 === void 0 ? void 0 : _selection_alias1.value) !== null && _ref1 !== void 0 ? _ref1 : selection.name.value]: {
|
|
215
|
-
field: selection.name.value,
|
|
216
|
-
type: type.name,
|
|
217
|
-
mappings,
|
|
218
|
-
indirectPath
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}
|
|
40
|
+
function planFromInfo({ config, ...options }) {
|
|
41
|
+
return _selectionmapper.Plan.fromInfo((0, _adapter.drizzleAdapter)(config), options);
|
|
222
42
|
}
|
|
223
|
-
function
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
for (const [key, value] of Object.entries(incoming)){
|
|
228
|
-
if (result[key]) {
|
|
229
|
-
result[key] = {
|
|
230
|
-
...result[key],
|
|
231
|
-
mappings: mergeMappings(result[key].mappings, value.mappings)
|
|
232
|
-
};
|
|
233
|
-
} else {
|
|
234
|
-
result[key] = value;
|
|
235
|
-
}
|
|
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 : {};
|
|
236
47
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
function queryFromInfo({ withUsageCheck, ...options }) {
|
|
240
|
-
const state = stateFromInfo(options);
|
|
241
|
-
(0, _loadermap.setLoaderMappings)(options.context, options.info, state.mappings);
|
|
242
|
-
const query = (0, _selections.selectionToQuery)(options.config, state);
|
|
243
|
-
return withUsageCheck ? (0, _usage.wrapWithUsageCheck)(query) : query;
|
|
244
|
-
}
|
|
245
|
-
function stateFromInfo({ config, context, info, typeName, select, path = [], paths = [] }) {
|
|
246
|
-
const returnType = (0, _graphql.getNamedType)(info.returnType);
|
|
247
|
-
const type = typeName ? info.schema.getTypeMap()[typeName] : returnType;
|
|
248
|
-
const initialSelection = select ? {
|
|
48
|
+
// A `select` without `columns` merges as "no columns yet", not "every column".
|
|
49
|
+
return plan.query(select ? {
|
|
249
50
|
columns: {},
|
|
250
51
|
...select
|
|
251
|
-
} : undefined;
|
|
252
|
-
let state;
|
|
253
|
-
if (path.length > 0 || paths.length > 0) {
|
|
254
|
-
var _returnType_extensions, _ref;
|
|
255
|
-
const { pothosIndirectInclude } = (_returnType_extensions = returnType.extensions) !== null && _returnType_extensions !== void 0 ? _returnType_extensions : {};
|
|
256
|
-
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)=>{
|
|
257
|
-
resolveIndirectIncludePaths(indirectType, info, indirectField, [], paths.length > 0 ? paths.map((p)=>p.map((n)=>typeof n === 'string' ? {
|
|
258
|
-
name: n
|
|
259
|
-
} : n)) : [
|
|
260
|
-
path.map((n)=>typeof n === 'string' ? {
|
|
261
|
-
name: n
|
|
262
|
-
} : n)
|
|
263
|
-
], subPath, (resolvedType, resolvedField, nested, deferred)=>{
|
|
264
|
-
state = createStateForSelection(config, info, resolvedType, undefined, initialSelection);
|
|
265
|
-
addTypeSelectionsForField(config, typeName ? type : resolvedType, context, info, state, resolvedField, nested, deferred);
|
|
266
|
-
}, deferred);
|
|
267
|
-
});
|
|
268
|
-
} else {
|
|
269
|
-
var _ref1;
|
|
270
|
-
var _rootFieldNode_alias;
|
|
271
|
-
state = createStateForSelection(config, info, type, undefined, initialSelection);
|
|
272
|
-
// Create initial segment for the root query field
|
|
273
|
-
const rootFieldNode = info.fieldNodes[0];
|
|
274
|
-
const rootField = info.parentType.getFields()[rootFieldNode.name.value];
|
|
275
|
-
const initialSegments = rootField ? [
|
|
276
|
-
{
|
|
277
|
-
field: rootFieldNode.name.value,
|
|
278
|
-
alias: (_ref1 = (_rootFieldNode_alias = rootFieldNode.alias) === null || _rootFieldNode_alias === void 0 ? void 0 : _rootFieldNode_alias.value) !== null && _ref1 !== void 0 ? _ref1 : rootFieldNode.name.value,
|
|
279
|
-
parentType: info.parentType.name,
|
|
280
|
-
isList: (0, _graphql.isListType)(rootField.type) || (0, _graphql.isListType)((0, _graphql.getNamedType)(rootField.type))
|
|
281
|
-
}
|
|
282
|
-
] : [];
|
|
283
|
-
addTypeSelectionsForField(config, type, context, info, state, info.fieldNodes[0], [], undefined, initialSegments);
|
|
284
|
-
}
|
|
285
|
-
if (!state) {
|
|
286
|
-
state = createStateForSelection(config, info, type, undefined, initialSelection);
|
|
287
|
-
}
|
|
288
|
-
return state;
|
|
289
|
-
}
|
|
290
|
-
function selectionStateFromInfo(config, context, info, typeName) {
|
|
291
|
-
const type = typeName ? info.schema.getTypeMap()[typeName] : info.parentType;
|
|
292
|
-
const state = createStateForSelection(config, info, type);
|
|
293
|
-
if (!((0, _graphql.isObjectType)(type) || (0, _graphql.isInterfaceType)(type))) {
|
|
294
|
-
throw new _core.PothosValidationError('Drizzle plugin can only resolve selections for object and interface types');
|
|
295
|
-
}
|
|
296
|
-
addFieldSelection(config, type, context, info, state, info.fieldNodes[0], []);
|
|
297
|
-
return state;
|
|
298
|
-
}
|
|
299
|
-
function createStateForSelection(config, info, type, parent, initialSelections) {
|
|
300
|
-
var _targetType_extensions, _ref;
|
|
301
|
-
const targetType = getIndirectType(type, info);
|
|
302
|
-
const { pothosDrizzleTable } = (_targetType_extensions = targetType.extensions) !== null && _targetType_extensions !== void 0 ? _targetType_extensions : {};
|
|
303
|
-
if (!pothosDrizzleTable) {
|
|
304
|
-
throw new _core.PothosValidationError(`Expected ${targetType.name} to have a table config`);
|
|
305
|
-
}
|
|
306
|
-
const state = (0, _selections.createState)(pothosDrizzleTable, (_ref = parent === null || parent === void 0 ? void 0 : parent.skipDeferredFragments) !== null && _ref !== void 0 ? _ref : config.skipDeferredFragments, parent);
|
|
307
|
-
if (initialSelections) {
|
|
308
|
-
(0, _selections.mergeSelection)(config, state, initialSelections);
|
|
309
|
-
}
|
|
310
|
-
return state;
|
|
311
|
-
}
|
|
312
|
-
function getIndirectType(type, info) {
|
|
313
|
-
var _targetType_extensions;
|
|
314
|
-
let targetType = type;
|
|
315
|
-
while((_targetType_extensions = targetType.extensions) === null || _targetType_extensions === void 0 ? void 0 : _targetType_extensions.pothosIndirectInclude){
|
|
316
|
-
targetType = info.schema.getType(targetType.extensions.pothosIndirectInclude.getType());
|
|
317
|
-
}
|
|
318
|
-
return targetType;
|
|
319
|
-
}
|
|
320
|
-
function normalizeInclude(path, type, expectedType) {
|
|
321
|
-
let currentType = path.length > 0 ? type : expectedType !== null && expectedType !== void 0 ? expectedType : type;
|
|
322
|
-
const normalized = [];
|
|
323
|
-
if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
|
|
324
|
-
throw new _core.PothosValidationError(`Expected ${currentType} to be an Object type`);
|
|
325
|
-
}
|
|
326
|
-
for (const fieldName of path){
|
|
327
|
-
const field = currentType.getFields()[fieldName];
|
|
328
|
-
if (!field) {
|
|
329
|
-
throw new _core.PothosValidationError(`Expected ${currentType} to have a field ${fieldName}`);
|
|
330
|
-
}
|
|
331
|
-
currentType = (0, _graphql.getNamedType)(field.type);
|
|
332
|
-
if (!((0, _graphql.isObjectType)(currentType) || (0, _graphql.isInterfaceType)(currentType))) {
|
|
333
|
-
throw new _core.PothosValidationError(`Expected ${currentType} to be an Object or Interface type`);
|
|
334
|
-
}
|
|
335
|
-
normalized.push({
|
|
336
|
-
name: fieldName,
|
|
337
|
-
type: currentType.name
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
return {
|
|
341
|
-
getType: ()=>{
|
|
342
|
-
var _ref;
|
|
343
|
-
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;
|
|
344
|
-
},
|
|
345
|
-
path: normalized
|
|
346
|
-
};
|
|
347
|
-
}
|
|
348
|
-
function fieldSkipped(info, selection) {
|
|
349
|
-
const skip = (0, _graphql.getDirectiveValues)(_graphql.GraphQLSkipDirective, selection, info.variableValues);
|
|
350
|
-
if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {
|
|
351
|
-
return true;
|
|
352
|
-
}
|
|
353
|
-
const include = (0, _graphql.getDirectiveValues)(_graphql.GraphQLIncludeDirective, selection, info.variableValues);
|
|
354
|
-
if ((include === null || include === void 0 ? void 0 : include.if) === false) {
|
|
355
|
-
return true;
|
|
356
|
-
}
|
|
357
|
-
return false;
|
|
358
|
-
}
|
|
359
|
-
function isDeferredFragment(node, info) {
|
|
360
|
-
const deferDirective = info.schema.getDirective('defer');
|
|
361
|
-
if (!deferDirective) {
|
|
362
|
-
return false;
|
|
363
|
-
}
|
|
364
|
-
const defer = (0, _graphql.getDirectiveValues)(deferDirective, node, info.variableValues);
|
|
365
|
-
return !!defer && defer.if !== false;
|
|
52
|
+
} : undefined);
|
|
366
53
|
}
|
|
367
54
|
|
|
368
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","parentType","addFieldSelection","pothosDrizzleModel","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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"}
|