@pothos/plugin-drizzle 0.17.6 → 0.18.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 +33 -0
- package/dts/connection-helpers.d.ts.map +1 -1
- package/dts/drizzle-field-builder.d.ts.map +1 -1
- package/dts/types.d.ts +5 -2
- package/dts/types.d.ts.map +1 -1
- package/dts/utils/config.d.ts +3 -0
- package/dts/utils/config.d.ts.map +1 -1
- package/dts/utils/cursors.d.ts +11 -7
- package/dts/utils/cursors.d.ts.map +1 -1
- package/esm/connection-helpers.d.ts.map +1 -1
- package/esm/connection-helpers.js +5 -4
- package/esm/connection-helpers.js.map +1 -1
- package/esm/drizzle-field-builder.d.ts.map +1 -1
- package/esm/drizzle-field-builder.js +5 -4
- package/esm/drizzle-field-builder.js.map +1 -1
- package/esm/types.d.ts +5 -2
- package/esm/types.d.ts.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/config.d.ts +3 -0
- package/esm/utils/config.d.ts.map +1 -1
- package/esm/utils/config.js +95 -17
- package/esm/utils/config.js.map +1 -1
- package/esm/utils/cursors.d.ts +11 -7
- package/esm/utils/cursors.d.ts.map +1 -1
- package/esm/utils/cursors.js +194 -113
- package/esm/utils/cursors.js.map +1 -1
- package/lib/connection-helpers.js +5 -4
- package/lib/connection-helpers.js.map +1 -1
- package/lib/drizzle-field-builder.js +5 -4
- package/lib/drizzle-field-builder.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/config.js +95 -17
- package/lib/utils/config.js.map +1 -1
- package/lib/utils/cursors.js +196 -112
- package/lib/utils/cursors.js.map +1 -1
- package/package.json +5 -5
- package/src/connection-helpers.ts +6 -4
- package/src/drizzle-field-builder.ts +7 -4
- package/src/types.ts +8 -4
- package/src/utils/config.ts +117 -20
- package/src/utils/cursors.ts +248 -87
package/lib/utils/config.js
CHANGED
|
@@ -37,6 +37,94 @@ const configCache = (0, _core.createContextCache)((builder)=>{
|
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
|
+
const buildTableConfig = (tableName)=>{
|
|
41
|
+
var _tableConfig_uniqueConstraints;
|
|
42
|
+
const table = relations[tableName].table;
|
|
43
|
+
const tableConfig = builder.options.drizzle.getTableConfig(table);
|
|
44
|
+
const tableColumns = Object.values((0, _drizzleorm.getColumns)(table));
|
|
45
|
+
// The pg dialect builds primaryKeys and uniqueConstraints from
|
|
46
|
+
// ExtraConfigColumns rather than the table's own columns, so the objects
|
|
47
|
+
// it hands back are not the ones columnNameMappings knows about, and do
|
|
48
|
+
// not carry notNull. Look each one back up by name.
|
|
49
|
+
const toTableColumn = (column)=>{
|
|
50
|
+
var _tableColumns_find;
|
|
51
|
+
return (_tableColumns_find = tableColumns.find((candidate)=>candidate.name === column.name)) !== null && _tableColumns_find !== void 0 ? _tableColumns_find : column;
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
columns: tableConfig.columns.map(toTableColumn),
|
|
55
|
+
primaryKeys: tableConfig.primaryKeys.map((key)=>key.columns.map(toTableColumn)),
|
|
56
|
+
uniqueConstraints: ((_tableConfig_uniqueConstraints = tableConfig.uniqueConstraints) !== null && _tableConfig_uniqueConstraints !== void 0 ? _tableConfig_uniqueConstraints : []).map((constraint)=>constraint.columns.map(toTableColumn))
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
const tableConfigs = new Map();
|
|
60
|
+
// drizzle rebuilds this from the table's config callback on every call
|
|
61
|
+
const getTableConfig = (tableName)=>{
|
|
62
|
+
let tableConfig = tableConfigs.get(tableName);
|
|
63
|
+
if (!tableConfig) {
|
|
64
|
+
tableConfig = buildTableConfig(tableName);
|
|
65
|
+
tableConfigs.set(tableName, tableConfig);
|
|
66
|
+
}
|
|
67
|
+
return tableConfig;
|
|
68
|
+
};
|
|
69
|
+
// Every set of columns the database guarantees is unique. Unique indexes
|
|
70
|
+
// are not included: missing one only costs a redundant order column, while
|
|
71
|
+
// wrongly reporting a set as unique would break pagination.
|
|
72
|
+
const getUniqueConstraints = (tableName)=>{
|
|
73
|
+
const tableConfig = getTableConfig(tableName);
|
|
74
|
+
return [
|
|
75
|
+
...tableConfig.columns.filter((column)=>column.primary || column.isUnique).map((column)=>[
|
|
76
|
+
column
|
|
77
|
+
]),
|
|
78
|
+
...tableConfig.primaryKeys,
|
|
79
|
+
...tableConfig.uniqueConstraints
|
|
80
|
+
].filter((columns)=>columns.length > 0);
|
|
81
|
+
};
|
|
82
|
+
// What a cursor can rely on to break ties. Primary key columns are
|
|
83
|
+
// non-nullable whatever the drizzle schema says, because SQL requires it,
|
|
84
|
+
// so a composite key declared without notNull() on each column still
|
|
85
|
+
// counts. A column that is only unique has to say so itself: comparing a
|
|
86
|
+
// cursor against null matches nothing, and rows sharing a null tie anyway.
|
|
87
|
+
const findTieBreaker = (tableName)=>{
|
|
88
|
+
const tableConfig = getTableConfig(tableName);
|
|
89
|
+
const primaryKey = tableConfig.columns.find((column)=>column.primary);
|
|
90
|
+
if (primaryKey) {
|
|
91
|
+
return [
|
|
92
|
+
primaryKey
|
|
93
|
+
];
|
|
94
|
+
}
|
|
95
|
+
const compositeKey = tableConfig.primaryKeys.find((columns)=>columns.length > 0);
|
|
96
|
+
if (compositeKey) {
|
|
97
|
+
return compositeKey;
|
|
98
|
+
}
|
|
99
|
+
const uniqueColumn = tableConfig.columns.find((column)=>column.isUnique && column.notNull);
|
|
100
|
+
if (uniqueColumn) {
|
|
101
|
+
return [
|
|
102
|
+
uniqueColumn
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
const uniqueConstraint = tableConfig.uniqueConstraints.find((columns)=>columns.length > 0 && columns.every((column)=>column.notNull));
|
|
106
|
+
return uniqueConstraint !== null && uniqueConstraint !== void 0 ? uniqueConstraint : null;
|
|
107
|
+
};
|
|
108
|
+
const findPrimaryKey = (tableName)=>{
|
|
109
|
+
const tableConfig = getTableConfig(tableName);
|
|
110
|
+
const primaryKey = tableConfig.columns.find((column)=>column.primary);
|
|
111
|
+
if (primaryKey) {
|
|
112
|
+
return [
|
|
113
|
+
primaryKey
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
const primaryKeys = tableConfig.primaryKeys.find((columns)=>columns.length > 0);
|
|
117
|
+
if (primaryKeys) {
|
|
118
|
+
return primaryKeys;
|
|
119
|
+
}
|
|
120
|
+
const uniqueColumn = tableConfig.columns.find((column)=>column.isUnique);
|
|
121
|
+
if (uniqueColumn) {
|
|
122
|
+
return [
|
|
123
|
+
uniqueColumn
|
|
124
|
+
];
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
};
|
|
40
128
|
return {
|
|
41
129
|
skipDeferredFragments: (_builder_options_drizzle_skipDeferredFragments = builder.options.drizzle.skipDeferredFragments) !== null && _builder_options_drizzle_skipDeferredFragments !== void 0 ? _builder_options_drizzle_skipDeferredFragments : true,
|
|
42
130
|
columnToTsName: (column)=>{
|
|
@@ -46,25 +134,15 @@ const configCache = (0, _core.createContextCache)((builder)=>{
|
|
|
46
134
|
}
|
|
47
135
|
return tsName;
|
|
48
136
|
},
|
|
137
|
+
findPrimaryKey,
|
|
138
|
+
findTieBreaker,
|
|
139
|
+
getUniqueConstraints,
|
|
49
140
|
getPrimaryKey: (tableName)=>{
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return [
|
|
54
|
-
primaryKey
|
|
55
|
-
];
|
|
56
|
-
}
|
|
57
|
-
const primaryKeys = tableConfig.primaryKeys.find((key)=>key.columns.length > 0);
|
|
58
|
-
if (primaryKeys) {
|
|
59
|
-
return primaryKeys.columns;
|
|
60
|
-
}
|
|
61
|
-
const uniqueColumn = tableConfig.columns.find((column)=>column.isUnique);
|
|
62
|
-
if (uniqueColumn) {
|
|
63
|
-
return [
|
|
64
|
-
uniqueColumn
|
|
65
|
-
];
|
|
141
|
+
const primaryKey = findPrimaryKey(tableName);
|
|
142
|
+
if (!primaryKey) {
|
|
143
|
+
throw new Error(`Could not find primary key for table ${tableName}`);
|
|
66
144
|
}
|
|
67
|
-
|
|
145
|
+
return primaryKey;
|
|
68
146
|
},
|
|
69
147
|
relations
|
|
70
148
|
};
|
package/lib/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/config.ts"],"names":["drizzleClientCache","getClient","getSchemaConfig","configCache","createContextCache","builder","relations","options","drizzle","client","_","columnNameMappings","Map","Object","values","forEach","table","isTable","entries","getColumns","tsName","col","set","
|
|
1
|
+
{"version":3,"sources":["../../src/utils/config.ts"],"names":["drizzleClientCache","getClient","getSchemaConfig","configCache","createContextCache","builder","relations","options","drizzle","client","_","columnNameMappings","Map","Object","values","forEach","table","isTable","entries","getColumns","tsName","col","set","buildTableConfig","tableName","tableConfig","getTableConfig","tableColumns","toTableColumn","column","find","candidate","name","columns","map","primaryKeys","key","uniqueConstraints","constraint","tableConfigs","get","getUniqueConstraints","filter","primary","isUnique","length","findTieBreaker","primaryKey","compositeKey","uniqueColumn","notNull","uniqueConstraint","every","findPrimaryKey","skipDeferredFragments","columnToTsName","Error","String","getPrimaryKey","clientConfig","ctx","_ctx","context"],"mappings":"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"}
|
package/lib/utils/cursors.js
CHANGED
|
@@ -9,6 +9,9 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
get cursorFieldKey () {
|
|
13
|
+
return cursorFieldKey;
|
|
14
|
+
},
|
|
12
15
|
get drizzleCursorConnectionQuery () {
|
|
13
16
|
return drizzleCursorConnectionQuery;
|
|
14
17
|
},
|
|
@@ -107,15 +110,20 @@ function getIDSerializer(fields, config) {
|
|
|
107
110
|
return `${formatIDChunk(value[config.columnToTsName(fields[0])])}`;
|
|
108
111
|
};
|
|
109
112
|
}
|
|
113
|
+
function cursorFieldKey(field, config) {
|
|
114
|
+
return typeof field === 'string' ? field : config.columnToTsName(field);
|
|
115
|
+
}
|
|
110
116
|
function getColumnSerializer(fields, config) {
|
|
111
117
|
if (fields.length === 0) {
|
|
112
118
|
throw new _core.PothosValidationError('Column serializer must have at least one field');
|
|
113
119
|
}
|
|
114
120
|
return (value)=>{
|
|
115
121
|
if (fields.length > 1) {
|
|
116
|
-
|
|
122
|
+
// each value carries its own type tag, the same ones a single value gets.
|
|
123
|
+
// Plain JSON would turn a Date into a string and refuse a bigint outright.
|
|
124
|
+
return `T:${JSON.stringify(fields.map((field)=>formatCursorChunk(value[cursorFieldKey(field, config)])))}`;
|
|
117
125
|
}
|
|
118
|
-
return formatCursorChunk(value[
|
|
126
|
+
return formatCursorChunk(value[cursorFieldKey(fields[0], config)]);
|
|
119
127
|
};
|
|
120
128
|
}
|
|
121
129
|
function getCursorFormatter(fields, config) {
|
|
@@ -146,7 +154,7 @@ function parseSerializedDrizzleColumn(value) {
|
|
|
146
154
|
throw new _core.PothosValidationError('value must be a string');
|
|
147
155
|
}
|
|
148
156
|
try {
|
|
149
|
-
const [, type, rawValue] = value.match(/^(S|N|D|J|I):(.*)/);
|
|
157
|
+
const [, type, rawValue] = value.match(/^(S|N|D|J|I|T):(.*)/);
|
|
150
158
|
switch(type){
|
|
151
159
|
case 'S':
|
|
152
160
|
return rawValue;
|
|
@@ -155,7 +163,11 @@ function parseSerializedDrizzleColumn(value) {
|
|
|
155
163
|
case 'D':
|
|
156
164
|
return new Date(Number.parseInt(rawValue, 10));
|
|
157
165
|
case 'J':
|
|
166
|
+
// compound values from before each one carried a tag: whatever JSON
|
|
167
|
+
// preserved is the best that can be recovered
|
|
158
168
|
return JSON.parse(rawValue);
|
|
169
|
+
case 'T':
|
|
170
|
+
return JSON.parse(rawValue).map((chunk)=>chunk === null ? null : parseSerializedDrizzleColumn(chunk));
|
|
159
171
|
case 'I':
|
|
160
172
|
return BigInt(rawValue);
|
|
161
173
|
default:
|
|
@@ -245,79 +257,207 @@ function getColumnParser(fields) {
|
|
|
245
257
|
return record;
|
|
246
258
|
};
|
|
247
259
|
}
|
|
248
|
-
function getCursorParser(
|
|
249
|
-
if (
|
|
260
|
+
function getCursorParser(keys) {
|
|
261
|
+
if (keys.length === 0) {
|
|
250
262
|
throw new _core.PothosValidationError('Cursor must have at least one field');
|
|
251
263
|
}
|
|
252
264
|
return (cursor)=>{
|
|
253
265
|
const parsed = parseDrizzleCursor(cursor);
|
|
254
|
-
if (
|
|
266
|
+
if (keys.length === 1) {
|
|
255
267
|
return {
|
|
256
|
-
[
|
|
268
|
+
[keys[0]]: parsed
|
|
257
269
|
};
|
|
258
270
|
}
|
|
259
|
-
|
|
260
|
-
|
|
271
|
+
// A cursor issued before a column joined the ordering only holds values for
|
|
272
|
+
// the columns that came before it. Those still describe a position, just a
|
|
273
|
+
// less precise one, so the page is keyed off the prefix the cursor covers
|
|
274
|
+
// rather than rejected. Cursors returned by that page carry every column.
|
|
275
|
+
const values = Array.isArray(parsed) ? parsed : [
|
|
276
|
+
parsed
|
|
277
|
+
];
|
|
278
|
+
if (values.length === 0) {
|
|
279
|
+
throw new _core.PothosValidationError('Cursor contains no values');
|
|
280
|
+
}
|
|
281
|
+
if (values.length > keys.length) {
|
|
282
|
+
throw new _core.PothosValidationError(`Expected cursor to contain at most ${keys.length} values, but got ${values.length}`);
|
|
261
283
|
}
|
|
262
284
|
const record = {};
|
|
263
|
-
|
|
264
|
-
record[
|
|
285
|
+
values.forEach((value, i)=>{
|
|
286
|
+
record[keys[i]] = value;
|
|
265
287
|
});
|
|
266
288
|
return record;
|
|
267
289
|
};
|
|
268
290
|
}
|
|
269
|
-
function
|
|
270
|
-
|
|
271
|
-
|
|
291
|
+
function resolveExpression(expression, table) {
|
|
292
|
+
return typeof expression === 'function' ? expression(table, {
|
|
293
|
+
sql: _drizzleorm.sql
|
|
294
|
+
}) : expression;
|
|
295
|
+
}
|
|
296
|
+
// Drizzle aliases the table it is querying (`d0`), so ordering and comparing
|
|
297
|
+
// have to reach for the column on that alias rather than the original table.
|
|
298
|
+
// Expressions get the alias handed to them and resolve themselves.
|
|
299
|
+
function orderTarget(entry, table) {
|
|
300
|
+
if (entry.column) {
|
|
301
|
+
var _table_entry_key;
|
|
302
|
+
return (_table_entry_key = table[entry.key]) !== null && _table_entry_key !== void 0 ? _table_entry_key : entry.column;
|
|
303
|
+
}
|
|
304
|
+
return resolveExpression(entry.expression, table);
|
|
305
|
+
}
|
|
306
|
+
function flipDirection(direction) {
|
|
307
|
+
return direction === 'asc' ? 'desc' : 'asc';
|
|
308
|
+
}
|
|
309
|
+
function ordersBy(entries, column) {
|
|
310
|
+
return entries.some((entry)=>{
|
|
311
|
+
var _entry_column;
|
|
312
|
+
return ((_entry_column = entry.column) === null || _entry_column === void 0 ? void 0 : _entry_column.name) === column.name;
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
// The ordering fixes a row's position only if some set of columns the database
|
|
316
|
+
// keeps unique is fully covered by it. A nullable column can't contribute:
|
|
317
|
+
// rows sharing a null tie with each other, and a cursor compared against null
|
|
318
|
+
// matches nothing.
|
|
319
|
+
function orderIsUnique(entries, config, table) {
|
|
320
|
+
return config.getUniqueConstraints(table.name).some((columns)=>columns.every((column)=>column.notNull && ordersBy(entries, column)));
|
|
321
|
+
}
|
|
322
|
+
// A cursor names a row's position in the ordering, which only works if no two
|
|
323
|
+
// rows can share a position. Ordering by a column with duplicate values (a
|
|
324
|
+
// timestamp, a status) leaves ties to be broken arbitrarily, so a row can move
|
|
325
|
+
// between pages and end up returned twice or skipped entirely. Appending a key
|
|
326
|
+
// the database keeps unique fixes that. Key columns already in the ordering are
|
|
327
|
+
// left where the user put them.
|
|
328
|
+
function appendTieBreaker(entries, config, table) {
|
|
329
|
+
var _ref;
|
|
330
|
+
var _entries_;
|
|
331
|
+
if (orderIsUnique(entries, config, table)) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const tieBreaker = config.findTieBreaker(table.name);
|
|
335
|
+
if (!tieBreaker) {
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
const direction = (_ref = (_entries_ = entries[entries.length - 1]) === null || _entries_ === void 0 ? void 0 : _entries_.direction) !== null && _ref !== void 0 ? _ref : 'asc';
|
|
339
|
+
for (const column of tieBreaker){
|
|
340
|
+
if (!ordersBy(entries, column)) {
|
|
341
|
+
entries.push({
|
|
342
|
+
direction,
|
|
343
|
+
key: config.columnToTsName(column),
|
|
344
|
+
column
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
function parseOrderBy(config, table, orderBy, invert, extras) {
|
|
272
350
|
const normalized = [];
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
config.columnToTsName(orderBy),
|
|
278
|
-
asc
|
|
279
|
-
]);
|
|
280
|
-
columns.push(orderBy);
|
|
281
|
-
normalized.push({
|
|
282
|
-
direction: 'asc',
|
|
283
|
-
column: orderBy
|
|
351
|
+
const columnEntry = (column, direction)=>({
|
|
352
|
+
direction,
|
|
353
|
+
key: config.columnToTsName(column),
|
|
354
|
+
column
|
|
284
355
|
});
|
|
356
|
+
if ('table' in orderBy && orderBy.table && typeof orderBy.table === 'object') {
|
|
357
|
+
normalized.push(columnEntry(orderBy, 'asc'));
|
|
285
358
|
} else if (Array.isArray(orderBy)) {
|
|
286
359
|
for (const field of orderBy){
|
|
287
|
-
|
|
288
|
-
config.columnToTsName(field),
|
|
289
|
-
asc
|
|
290
|
-
]);
|
|
291
|
-
columns.push(field);
|
|
292
|
-
normalized.push({
|
|
293
|
-
direction: 'asc',
|
|
294
|
-
column: field
|
|
295
|
-
});
|
|
360
|
+
normalized.push(columnEntry(field, 'asc'));
|
|
296
361
|
}
|
|
297
362
|
} else {
|
|
298
363
|
const tableColumns = (0, _drizzleorm.getColumns)(table.table);
|
|
299
364
|
Object.entries(orderBy).forEach(([name, direction])=>{
|
|
300
|
-
if (direction) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
normalized.push({
|
|
308
|
-
direction: direction,
|
|
309
|
-
column
|
|
310
|
-
});
|
|
365
|
+
if (!direction) {
|
|
366
|
+
return;
|
|
367
|
+
}
|
|
368
|
+
const column = tableColumns[name];
|
|
369
|
+
if (column) {
|
|
370
|
+
normalized.push(columnEntry(column, direction));
|
|
371
|
+
return;
|
|
311
372
|
}
|
|
373
|
+
const expression = extras === null || extras === void 0 ? void 0 : extras[name];
|
|
374
|
+
if (!expression) {
|
|
375
|
+
throw new _core.PothosValidationError(`Can't order by "${name}": ${table.name} has no such column, and the query passed to the connection declares no extra with that name`);
|
|
376
|
+
}
|
|
377
|
+
normalized.push({
|
|
378
|
+
direction,
|
|
379
|
+
key: name,
|
|
380
|
+
expression
|
|
381
|
+
});
|
|
312
382
|
});
|
|
313
383
|
}
|
|
384
|
+
appendTieBreaker(normalized, config, table);
|
|
385
|
+
const directionFor = ({ direction })=>invert ? flipDirection(direction) : direction;
|
|
314
386
|
return {
|
|
315
387
|
normalized,
|
|
316
|
-
columns
|
|
317
|
-
|
|
388
|
+
// only real columns need adding to the selection; extras are already selected
|
|
389
|
+
columns: normalized.flatMap(({ column })=>column ? [
|
|
390
|
+
column
|
|
391
|
+
] : []),
|
|
392
|
+
cursorFields: normalized.map(({ column, key })=>column !== null && column !== void 0 ? column : key),
|
|
393
|
+
// the object form can only name columns, so an expression forces the
|
|
394
|
+
// callback form -- which renders identically for the columns beside it
|
|
395
|
+
orderBy: normalized.some(({ expression })=>expression) ? (t)=>normalized.map((entry)=>(directionFor(entry) === 'asc' ? _drizzleorm.asc : _drizzleorm.desc)(orderTarget(entry, t))) : Object.fromEntries(normalized.map((entry)=>[
|
|
396
|
+
entry.key,
|
|
397
|
+
directionFor(entry)
|
|
398
|
+
]))
|
|
318
399
|
};
|
|
319
400
|
}
|
|
320
|
-
|
|
401
|
+
// Rows past the cursor are those where the first ordering column that differs
|
|
402
|
+
// from the cursor differs in the direction being paged. Columns the cursor
|
|
403
|
+
// doesn't cover are left out: it was issued for a shorter ordering, and its
|
|
404
|
+
// prefix still describes a position.
|
|
405
|
+
function compareTo(entry, operator, value) {
|
|
406
|
+
const isNullish = value === null || value === undefined;
|
|
407
|
+
if (entry.column) {
|
|
408
|
+
if (operator === 'eq' && isNullish) {
|
|
409
|
+
return {
|
|
410
|
+
[entry.key]: {
|
|
411
|
+
isNull: true
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
// never the `{ column: value }` shorthand: drizzle reads any object value
|
|
416
|
+
// as a nested filter, so a null throws and a Date silently drops the
|
|
417
|
+
// comparison. Naming the operator works for every value a cursor can hold
|
|
418
|
+
return {
|
|
419
|
+
[entry.key]: {
|
|
420
|
+
[operator]: value
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
if (operator === 'eq' && isNullish) {
|
|
425
|
+
return {
|
|
426
|
+
RAW: (table)=>(0, _drizzleorm.isNull)(orderTarget(entry, table))
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
const operators = {
|
|
430
|
+
gt: _drizzleorm.gt,
|
|
431
|
+
lt: _drizzleorm.lt,
|
|
432
|
+
eq: _drizzleorm.eq
|
|
433
|
+
};
|
|
434
|
+
// RAW hands the filter the table it is being built against, which is what an
|
|
435
|
+
// expression needs to resolve
|
|
436
|
+
return {
|
|
437
|
+
RAW: (table)=>operators[operator](orderTarget(entry, table), value)
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
function keysetFilter(entries, cursor, paging) {
|
|
441
|
+
const parsedCursor = getCursorParser(entries.map(({ key })=>key))(cursor);
|
|
442
|
+
const covered = entries.filter(({ key })=>key in parsedCursor);
|
|
443
|
+
const parts = covered.map((entry, index)=>{
|
|
444
|
+
const ascending = paging === 'after' ? entry.direction === 'asc' : entry.direction === 'desc';
|
|
445
|
+
const compare = compareTo(entry, ascending ? 'gt' : 'lt', parsedCursor[entry.key]);
|
|
446
|
+
if (index === 0) {
|
|
447
|
+
return compare;
|
|
448
|
+
}
|
|
449
|
+
return {
|
|
450
|
+
AND: [
|
|
451
|
+
...covered.slice(0, index).map((previous)=>compareTo(previous, 'eq', parsedCursor[previous.key])),
|
|
452
|
+
compare
|
|
453
|
+
]
|
|
454
|
+
};
|
|
455
|
+
});
|
|
456
|
+
return parts.length > 1 ? {
|
|
457
|
+
OR: parts
|
|
458
|
+
} : parts[0];
|
|
459
|
+
}
|
|
460
|
+
function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, orderBy, extras, where, config, table }) {
|
|
321
461
|
var _ref;
|
|
322
462
|
const { before, after, first, last } = args;
|
|
323
463
|
if (first != null && first < 0) {
|
|
@@ -333,7 +473,7 @@ function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, d
|
|
|
333
473
|
const defaultSizeForConnection = typeof defaultSize === 'function' ? defaultSize(args, ctx) : defaultSize;
|
|
334
474
|
const limit = Math.min((_ref = first !== null && first !== void 0 ? first : last) !== null && _ref !== void 0 ? _ref : defaultSizeForConnection, maxSizeForConnection) + 1;
|
|
335
475
|
const inverted = !first && !!last;
|
|
336
|
-
const parsedOrderBy = parseOrderBy(config, table, orderBy, inverted);
|
|
476
|
+
const parsedOrderBy = parseOrderBy(config, table, orderBy, inverted, extras);
|
|
337
477
|
const columns = {};
|
|
338
478
|
for (const column of parsedOrderBy.columns){
|
|
339
479
|
columns[config.columnToTsName(column)] = true;
|
|
@@ -343,71 +483,13 @@ function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, d
|
|
|
343
483
|
whereClauses.push(where);
|
|
344
484
|
}
|
|
345
485
|
if (after) {
|
|
346
|
-
|
|
347
|
-
const parsedCursor = cursorParser(after);
|
|
348
|
-
const parts = parsedOrderBy.normalized.map(({ direction, column }, index)=>{
|
|
349
|
-
const columnName = config.columnToTsName(column);
|
|
350
|
-
const compare = direction === 'asc' ? {
|
|
351
|
-
[columnName]: {
|
|
352
|
-
gt: parsedCursor[column.name]
|
|
353
|
-
}
|
|
354
|
-
} : {
|
|
355
|
-
[columnName]: {
|
|
356
|
-
lt: parsedCursor[column.name]
|
|
357
|
-
}
|
|
358
|
-
};
|
|
359
|
-
if (index === 0) {
|
|
360
|
-
return compare;
|
|
361
|
-
}
|
|
362
|
-
return {
|
|
363
|
-
AND: [
|
|
364
|
-
...parsedOrderBy.normalized.slice(0, index).map(({ column: c })=>{
|
|
365
|
-
return {
|
|
366
|
-
[config.columnToTsName(c)]: parsedCursor[c.name]
|
|
367
|
-
};
|
|
368
|
-
}),
|
|
369
|
-
compare
|
|
370
|
-
]
|
|
371
|
-
};
|
|
372
|
-
});
|
|
373
|
-
whereClauses.push(parts.length > 1 ? {
|
|
374
|
-
OR: parts
|
|
375
|
-
} : parts[0]);
|
|
486
|
+
whereClauses.push(keysetFilter(parsedOrderBy.normalized, after, 'after'));
|
|
376
487
|
}
|
|
377
488
|
if (before) {
|
|
378
|
-
|
|
379
|
-
const parsedCursor = cursorParser(before);
|
|
380
|
-
const parts = parsedOrderBy.normalized.map(({ direction, column }, index)=>{
|
|
381
|
-
const columnName = config.columnToTsName(column);
|
|
382
|
-
const compare = direction === 'desc' ? {
|
|
383
|
-
[columnName]: {
|
|
384
|
-
gt: parsedCursor[column.name]
|
|
385
|
-
}
|
|
386
|
-
} : {
|
|
387
|
-
[columnName]: {
|
|
388
|
-
lt: parsedCursor[column.name]
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
if (index === 0) {
|
|
392
|
-
return compare;
|
|
393
|
-
}
|
|
394
|
-
return {
|
|
395
|
-
AND: [
|
|
396
|
-
...parsedOrderBy.normalized.slice(0, index).map(({ column: c })=>{
|
|
397
|
-
return {
|
|
398
|
-
[config.columnToTsName(c)]: parsedCursor[c.name]
|
|
399
|
-
};
|
|
400
|
-
}),
|
|
401
|
-
compare
|
|
402
|
-
]
|
|
403
|
-
};
|
|
404
|
-
});
|
|
405
|
-
whereClauses.push(parts.length > 1 ? {
|
|
406
|
-
OR: parts
|
|
407
|
-
} : parts[0]);
|
|
489
|
+
whereClauses.push(keysetFilter(parsedOrderBy.normalized, before, 'before'));
|
|
408
490
|
}
|
|
409
491
|
return (0, _selections.omitUndefinedKeys)({
|
|
410
|
-
|
|
492
|
+
cursorFields: parsedOrderBy.cursorFields,
|
|
411
493
|
columns,
|
|
412
494
|
orderBy: parsedOrderBy.orderBy,
|
|
413
495
|
limit,
|
|
@@ -459,18 +541,20 @@ async function resolveDrizzleCursorConnection(tableName, info, typeName, config,
|
|
|
459
541
|
let formatter;
|
|
460
542
|
const results = await resolve((q = {})=>{
|
|
461
543
|
var _ref;
|
|
462
|
-
const {
|
|
544
|
+
const { cursorFields, ...connectionQuery } = drizzleCursorConnectionQuery({
|
|
463
545
|
...options,
|
|
464
546
|
config,
|
|
465
547
|
orderBy: (_ref = typeof q.orderBy === 'function' ? q.orderBy(table.table) : q.orderBy) !== null && _ref !== void 0 ? _ref : config.getPrimaryKey(table.name),
|
|
548
|
+
extras: q.extras,
|
|
466
549
|
table
|
|
467
550
|
});
|
|
468
|
-
formatter = getCursorFormatter(
|
|
551
|
+
formatter = getCursorFormatter(cursorFields, config);
|
|
469
552
|
query = (0, _mapquery.queryFromInfo)({
|
|
470
553
|
context: options.ctx,
|
|
471
554
|
info,
|
|
472
555
|
select: (0, _selections.omitUndefinedKeys)({
|
|
473
556
|
...connectionQuery,
|
|
557
|
+
extras: q.extras,
|
|
474
558
|
columns: {
|
|
475
559
|
...q.columns,
|
|
476
560
|
...connectionQuery.columns
|
package/lib/utils/cursors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/cursors.ts"],"names":["drizzleCursorConnectionQuery","formatCursorChunk","formatDrizzleCursor","formatIDChunk","getColumnParser","getColumnSerializer","getCursorFormatter","getCursorParser","getIDParser","getIDSerializer","parseDrizzleCursor","parseSerializedDrizzleColumn","parseSerializedIDColumn","resolveDrizzleCursorConnection","wrapConnectionResult","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","PothosValidationError","record","fields","config","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","dataType","error","name","parsed","Array","isArray","forEach","i","parseOrderBy","table","orderBy","invert","entries","columns","normalized","asc","desc","push","direction","column","tableColumns","getColumns","Object","fromEntries","args","ctx","maxSize","defaultSize","where","first","before","after","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","cursorParser","parsedCursor","parts","index","columnName","compare","gt","lt","AND","c","OR","omitUndefinedKeys","cursorColumns","results","resolveNode","parent","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","queryFromInfo","context","select","paths","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/cursors.ts"],"names":["cursorFieldKey","drizzleCursorConnectionQuery","formatCursorChunk","formatDrizzleCursor","formatIDChunk","getColumnParser","getColumnSerializer","getCursorFormatter","getCursorParser","getIDParser","getIDSerializer","parseDrizzleCursor","parseSerializedDrizzleColumn","parseSerializedIDColumn","resolveDrizzleCursorConnection","wrapConnectionResult","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","PothosValidationError","record","fields","config","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","chunk","BigInt","id","dataType","error","name","parsed","Array","isArray","forEach","i","keys","values","resolveExpression","expression","table","sql","orderTarget","entry","column","key","flipDirection","direction","ordersBy","entries","some","orderIsUnique","getUniqueConstraints","columns","every","notNull","appendTieBreaker","tieBreaker","findTieBreaker","push","parseOrderBy","orderBy","invert","extras","normalized","columnEntry","tableColumns","getColumns","Object","directionFor","flatMap","cursorFields","t","asc","desc","fromEntries","compareTo","operator","isNullish","undefined","isNull","RAW","operators","gt","lt","eq","keysetFilter","paging","parsedCursor","covered","filter","parts","index","ascending","compare","AND","previous","OR","args","ctx","maxSize","defaultSize","where","first","before","after","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","omitUndefinedKeys","results","resolveNode","parent","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","queryFromInfo","context","select","paths"],"mappings":"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"}
|