orange-orm 4.3.0-beta.2 → 4.3.0-beta.3
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/package.json +1 -1
- package/src/getManyDto.js +336 -68
package/package.json
CHANGED
package/src/getManyDto.js
CHANGED
|
@@ -28,7 +28,7 @@ function newCreateRow(span) {
|
|
|
28
28
|
const c = {};
|
|
29
29
|
c.visitJoin = () => { };
|
|
30
30
|
c.visitOne = () => { };
|
|
31
|
-
c.visitMany = function(leg) {
|
|
31
|
+
c.visitMany = function (leg) {
|
|
32
32
|
manyNames.push(leg.name);
|
|
33
33
|
};
|
|
34
34
|
|
|
@@ -58,11 +58,11 @@ function createProto(columns, span) {
|
|
|
58
58
|
}
|
|
59
59
|
const c = {};
|
|
60
60
|
|
|
61
|
-
c.visitJoin = function(leg) {
|
|
61
|
+
c.visitJoin = function (leg) {
|
|
62
62
|
obj[leg.name] = null;
|
|
63
63
|
};
|
|
64
64
|
c.visitOne = c.visitJoin;
|
|
65
|
-
c.visitMany = function(leg) {
|
|
65
|
+
c.visitMany = function (leg) {
|
|
66
66
|
obj[leg.name] = null;
|
|
67
67
|
};
|
|
68
68
|
|
|
@@ -80,7 +80,7 @@ function hasManyRelations(span) {
|
|
|
80
80
|
const c = {};
|
|
81
81
|
c.visitJoin = () => { };
|
|
82
82
|
c.visitOne = c.visitJoin;
|
|
83
|
-
c.visitMany = function() {
|
|
83
|
+
c.visitMany = function () {
|
|
84
84
|
result = true;
|
|
85
85
|
};
|
|
86
86
|
|
|
@@ -108,35 +108,52 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
|
|
|
108
108
|
const outRows = new Array(rowsLength);
|
|
109
109
|
const createRow = newCreateRow(span);
|
|
110
110
|
const shouldCreateMap = hasManyRelations(span);
|
|
111
|
+
let all = [];;
|
|
112
|
+
|
|
111
113
|
for (let i = 0; i < rowsLength; i++) {
|
|
112
114
|
const row = rows[i];
|
|
113
115
|
let outRow = createRow();
|
|
114
116
|
let pkWithNullCount = 0;
|
|
115
|
-
for (let j = 0; j <
|
|
116
|
-
if (j
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
117
|
+
for (let j = 0; j < primaryColumnsLength; j++) {
|
|
118
|
+
if (row[keys[j]] === null)
|
|
119
|
+
pkWithNullCount++;
|
|
120
|
+
if (pkWithNullCount === primaryColumnsLength) {
|
|
121
|
+
outRow = null;
|
|
122
|
+
break;
|
|
123
123
|
}
|
|
124
124
|
const column = columns[j];
|
|
125
125
|
outRow[column.alias] = column.decode(row[keys[j]]);
|
|
126
|
-
}
|
|
127
126
|
|
|
128
|
-
for (let j = 0; j < aggregateKeys.length; j++) {
|
|
129
|
-
const key = aggregateKeys[j];
|
|
130
|
-
const parse = span.aggregates[key].column?.decode || Number.parseFloat;
|
|
131
|
-
outRow[key] = parse(row[keys[j + columnsLength]]);
|
|
132
127
|
}
|
|
133
128
|
|
|
134
|
-
|
|
135
|
-
if (shouldCreateMap) {
|
|
129
|
+
if (shouldCreateMap && outRow) {
|
|
136
130
|
fkIds[i] = getIds(outRow);
|
|
137
131
|
addToMap(rowsMap, primaryColumns, outRow);
|
|
138
132
|
}
|
|
133
|
+
outRows[i] = outRow;
|
|
139
134
|
}
|
|
135
|
+
|
|
136
|
+
all.push(new Promise((resolve) => {
|
|
137
|
+
setImmediate(async () => {
|
|
138
|
+
for (let i = 0; i < rowsLength; i++) {
|
|
139
|
+
const currentOutRow = outRows[i];
|
|
140
|
+
const currentRow = rows[i];
|
|
141
|
+
for (let j = primaryColumnsLength; j < columnsLength; j++) {
|
|
142
|
+
const column = columns[j];
|
|
143
|
+
currentOutRow[column.alias] = column.decode(currentRow[keys[j]]);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
for (let j = 0; j < aggregateKeys.length; j++) {
|
|
147
|
+
const key = aggregateKeys[j];
|
|
148
|
+
const parse = span.aggregates[key].column?.decode || Number.parseFloat;
|
|
149
|
+
currentOutRow[key] = parse(currentRow[keys[j + columnsLength]]);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
resolve();
|
|
153
|
+
});
|
|
154
|
+
}));
|
|
155
|
+
|
|
156
|
+
|
|
140
157
|
span._rowsMap = rowsMap;
|
|
141
158
|
span._ids = fkIds;
|
|
142
159
|
|
|
@@ -144,15 +161,107 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
|
|
|
144
161
|
if (span.legs.toArray().length === 0)
|
|
145
162
|
return outRows;
|
|
146
163
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
164
|
+
//alt 1
|
|
165
|
+
// 3.1 sec
|
|
166
|
+
// await new Promise((resolve, reject) => {
|
|
167
|
+
// setTimeout(() => {
|
|
168
|
+
// if (shouldCreateMap)
|
|
169
|
+
// decodeManyRelations(strategy, span, rows, outRows, keys)
|
|
170
|
+
// .then(() => decodeRelations2(strategy, span, rows, outRows, keys))
|
|
171
|
+
// .then(resolve)
|
|
172
|
+
// .catch(reject);
|
|
173
|
+
// else
|
|
174
|
+
// decodeRelations2(strategy, span, rows, outRows, keys)
|
|
175
|
+
// .then(resolve)
|
|
176
|
+
// .catch(reject);
|
|
177
|
+
// }, 0);
|
|
178
|
+
// });
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
//alt 1
|
|
182
|
+
// 3.2 sec
|
|
183
|
+
// await new Promise((resolve, reject) => {
|
|
184
|
+
// setTimeout(() => {
|
|
185
|
+
// const all = [];
|
|
186
|
+
// if (shouldCreateMap)
|
|
187
|
+
// all.push(decodeManyRelations(strategy, span, rows, outRows, keys))
|
|
188
|
+
|
|
189
|
+
// all.push(new Promise((resolve, reject) => {
|
|
190
|
+
// setTimeout(async () => {
|
|
191
|
+
// await decodeRelations2(strategy, span, rows, outRows, keys);
|
|
192
|
+
// resolve();
|
|
193
|
+
|
|
194
|
+
// }, 0);
|
|
195
|
+
// }));
|
|
196
|
+
// // const p2 = decodeRelations2(strategy, span, rows, outRows, keys);
|
|
197
|
+
// Promise.all(all).then(resolve, reject);
|
|
198
|
+
// }, 0);
|
|
199
|
+
// });
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
// let all = [];;
|
|
203
|
+
// if(shouldCreateMap) {
|
|
204
|
+
|
|
205
|
+
// await decodeManyRelations(strategy, span, rows, outRows, keys).then(() => decodeRelations2(strategy, span, rows, outRows, keys));
|
|
206
|
+
// }
|
|
207
|
+
// else
|
|
208
|
+
// await decodeRelations2(strategy, span, rows, outRows, keys);
|
|
209
|
+
|
|
210
|
+
// await Promise.all(all);
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
//alt 3
|
|
215
|
+
// 3.05 sec
|
|
216
|
+
|
|
217
|
+
if (shouldCreateMap) {
|
|
218
|
+
// all.push( decodeRelations2(strategy, span, rows, outRows, keys).then(() => decodeManyRelations(strategy, span)));
|
|
219
|
+
all.push(decodeManyRelations(strategy, span));
|
|
220
|
+
all.push(decodeRelations2(strategy, span, rows, outRows, keys));
|
|
221
|
+
// all.push( decodeManyRelations(strategy, span).then(() => decodeRelations2(strategy, span, rows, outRows, keys)));
|
|
222
|
+
// all.push( decodeManyRelations(strategy, span));
|
|
223
|
+
// all.push(decodeRelations2(strategy, span, rows, outRows, keys));
|
|
224
|
+
// all.push( decodeRelations2(strategy, span, rows, outRows, keys) );
|
|
225
|
+
}
|
|
151
226
|
else
|
|
152
227
|
all.push(decodeRelations2(strategy, span, rows, outRows, keys));
|
|
153
228
|
|
|
229
|
+
|
|
154
230
|
await Promise.all(all);
|
|
155
231
|
|
|
232
|
+
//alt 4
|
|
233
|
+
// 3.02 sec
|
|
234
|
+
// const all = [];
|
|
235
|
+
// if (shouldCreateMap)
|
|
236
|
+
// // all.push(new Promise((resolve, reject) => {
|
|
237
|
+
// // setTimeout(async () => {
|
|
238
|
+
// // await decodeManyRelations(strategy, span);
|
|
239
|
+
// // resolve();
|
|
240
|
+
|
|
241
|
+
// // }, 0)
|
|
242
|
+
// // }));
|
|
243
|
+
// all.push(decodeManyRelations(strategy, span));
|
|
244
|
+
// all.push(new Promise((resolve, reject) => {
|
|
245
|
+
// setTimeout(async () => {
|
|
246
|
+
// await decodeRelations2(strategy, span, rows, outRows, keys);
|
|
247
|
+
// resolve();
|
|
248
|
+
|
|
249
|
+
// }, 0);
|
|
250
|
+
// }));
|
|
251
|
+
// await Promise.all(all);
|
|
252
|
+
|
|
253
|
+
// all.push(decodeRelations2(strategy, span, rows, outRows, keys));
|
|
254
|
+
|
|
255
|
+
//alt 4
|
|
256
|
+
// 3.3 sec
|
|
257
|
+
// if(shouldCreateMap)
|
|
258
|
+
// await decodeRelations(strategy, span, rows, outRows, keys);
|
|
259
|
+
// else
|
|
260
|
+
// await decodeRelations2(strategy, span, rows, outRows, keys);
|
|
261
|
+
|
|
262
|
+
// await decodeRelationsNext(strategy, span, rows, outRows, keys);
|
|
263
|
+
// await decodeRelations(strategy, span, rows, outRows, keys);
|
|
264
|
+
|
|
156
265
|
return outRows;
|
|
157
266
|
|
|
158
267
|
|
|
@@ -174,14 +283,79 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
|
|
|
174
283
|
}
|
|
175
284
|
|
|
176
285
|
}
|
|
286
|
+
async function decodeRelations2(strategy, span, rawRows, resultRows, keys) {
|
|
287
|
+
const legs = span.legs.toArray();
|
|
288
|
+
if (legs.length === 0)
|
|
289
|
+
return;
|
|
290
|
+
const promises = [];
|
|
291
|
+
const c = {};
|
|
292
|
+
c.visitJoin = function (leg) {
|
|
293
|
+
const name = leg.name;
|
|
294
|
+
const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
295
|
+
for (let i = 0; i < rows.length; i++) {
|
|
296
|
+
resultRows[i][name] = rows[i];
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
promises.push(p);
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
c.visitOne = c.visitJoin;
|
|
303
|
+
|
|
304
|
+
c.visitMany = () => { };
|
|
305
|
+
|
|
306
|
+
function processLegs(index) {
|
|
307
|
+
if (index >= legs.length) {
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
const leg = legs[index];
|
|
311
|
+
leg.accept(c);
|
|
312
|
+
Promise.all(promises).then(() => {
|
|
313
|
+
setImmediate(() => {
|
|
314
|
+
processLegs(index + 1);
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
processLegs(0);
|
|
320
|
+
|
|
321
|
+
await Promise.all(promises);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
async function decodeRelations3(strategy, span, rawRows, resultRows, keys) {
|
|
325
|
+
const promises = [];
|
|
326
|
+
const c = {};
|
|
327
|
+
c.visitJoin = function (leg) {
|
|
328
|
+
const name = leg.name;
|
|
329
|
+
const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
330
|
+
for (let i = 0; i < rows.length; i++) {
|
|
331
|
+
resultRows[i][name] = rows[i];
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
promises.push(p);
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
c.visitOne = c.visitJoin;
|
|
338
|
+
|
|
339
|
+
c.visitMany = () => { };
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
span.legs.forEach(onEachLeg);
|
|
343
|
+
|
|
344
|
+
function onEachLeg(leg) {
|
|
345
|
+
leg.accept(c);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
await Promise.all(promises);
|
|
349
|
+
}
|
|
177
350
|
|
|
178
|
-
|
|
351
|
+
|
|
352
|
+
async function decodeManyRelations(strategy, span, rawRows, resultRows, keys) {
|
|
179
353
|
const promises = [];
|
|
180
354
|
const c = {};
|
|
181
355
|
c.visitJoin = () => { };
|
|
182
356
|
c.visitOne = c.visitJoin;
|
|
183
357
|
|
|
184
|
-
c.visitMany = function(leg) {
|
|
358
|
+
c.visitMany = function (leg) {
|
|
185
359
|
const name = leg.name;
|
|
186
360
|
const table = span.table;
|
|
187
361
|
const relation = table._relations[name];
|
|
@@ -203,10 +377,131 @@ async function decodeManyRelations(strategy, span) {
|
|
|
203
377
|
leg.accept(c);
|
|
204
378
|
}
|
|
205
379
|
|
|
380
|
+
// await Promise.all(promises);
|
|
381
|
+
// }
|
|
382
|
+
|
|
383
|
+
// async function decodeRelations2(strategy, span, rawRows, resultRows, keys) {
|
|
384
|
+
// const promises = [];
|
|
385
|
+
// const c = {};
|
|
386
|
+
// c.visitJoin = function (leg) {
|
|
387
|
+
// const name = leg.name;
|
|
388
|
+
// //todo avoid traverse twice noMany relations below
|
|
389
|
+
// const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
390
|
+
// for (let i = 0; i < rows.length; i++) {
|
|
391
|
+
// resultRows[i][name] = rows[i];
|
|
392
|
+
// }
|
|
393
|
+
// });
|
|
394
|
+
// promises.push(p);
|
|
395
|
+
// };
|
|
396
|
+
|
|
397
|
+
// c.visitOne = c.visitJoin;
|
|
398
|
+
|
|
399
|
+
// c.visitMany = () => { };
|
|
400
|
+
|
|
401
|
+
// span.legs.forEach(onEachLeg);
|
|
402
|
+
|
|
403
|
+
// function onEachLeg(leg) {
|
|
404
|
+
// leg.accept(c);
|
|
405
|
+
// }
|
|
406
|
+
|
|
206
407
|
await Promise.all(promises);
|
|
207
408
|
}
|
|
208
409
|
|
|
209
|
-
async function
|
|
410
|
+
async function decodeRelations3(strategy, span, rawRows, resultRows, keys) {
|
|
411
|
+
|
|
412
|
+
let previous = new Promise((resolve) => setImmediate(() => resolve()));
|
|
413
|
+
const c = {};
|
|
414
|
+
|
|
415
|
+
c.visitJoin = function (leg) {
|
|
416
|
+
const name = leg.name;
|
|
417
|
+
const p = new Promise((resolve) => {
|
|
418
|
+
setImmediate(() => {
|
|
419
|
+
decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
420
|
+
for (let i = 0; i < rows.length; i++) {
|
|
421
|
+
resultRows[i][name] = rows[i];
|
|
422
|
+
}
|
|
423
|
+
resolve();
|
|
424
|
+
});
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
previous = previous.then(() => p);
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
c.visitOne = c.visitJoin;
|
|
431
|
+
|
|
432
|
+
c.visitMany = () => { };
|
|
433
|
+
|
|
434
|
+
span.legs.forEach(onEachLeg);
|
|
435
|
+
|
|
436
|
+
function onEachLeg(leg) {
|
|
437
|
+
leg.accept(c);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
await previous;
|
|
441
|
+
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
async function decodeRelationsNext(strategy, span, rawRows, resultRows, keys) {
|
|
446
|
+
// const promises = [];
|
|
447
|
+
let previous = new Promise((resolve) => setImmediate(() => resolve()));
|
|
448
|
+
const c = {};
|
|
449
|
+
|
|
450
|
+
c.visitJoin = function (leg) {
|
|
451
|
+
const name = leg.name;
|
|
452
|
+
const p = new Promise((resolve) => {
|
|
453
|
+
setImmediate(() => {
|
|
454
|
+
decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
455
|
+
for (let i = 0; i < rows.length; i++) {
|
|
456
|
+
resultRows[i][name] = rows[i];
|
|
457
|
+
}
|
|
458
|
+
resolve();
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
});
|
|
462
|
+
previous = previous.then(() => p);
|
|
463
|
+
};
|
|
464
|
+
|
|
465
|
+
c.visitOne = c.visitJoin;
|
|
466
|
+
|
|
467
|
+
c.visitMany = function (leg) {
|
|
468
|
+
const p = new Promise((resolve, reject) => {
|
|
469
|
+
setImmediate(() => {
|
|
470
|
+
|
|
471
|
+
const name = leg.name;
|
|
472
|
+
const table = span.table;
|
|
473
|
+
const relation = table._relations[name];
|
|
474
|
+
const filter = createOneFilter(relation, span._ids);
|
|
475
|
+
const rowsMap = span._rowsMap;
|
|
476
|
+
|
|
477
|
+
getManyDto(relation.childTable, filter, strategy[name], leg.span).then(subRows => {
|
|
478
|
+
for (let i = 0; i < subRows.length; i++) {
|
|
479
|
+
const key = leg.columns.map(column => subRows[i][column.alias]);
|
|
480
|
+
const parentRow = getFromMap(rowsMap, table._primaryColumns, key);
|
|
481
|
+
parentRow[name].push(subRows[i]);
|
|
482
|
+
}
|
|
483
|
+
}).then(() => resolve(), reject);
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
});
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
previous = previous.then(() => p);
|
|
491
|
+
// promises.push(p);
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
span.legs.forEach(onEachLeg);
|
|
495
|
+
|
|
496
|
+
function onEachLeg(leg) {
|
|
497
|
+
leg.accept(c);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
await previous
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
|
|
210
505
|
const promises = [];
|
|
211
506
|
const c = {};
|
|
212
507
|
c.visitJoin = function (leg) {
|
|
@@ -221,7 +516,21 @@ async function decodeRelations2(strategy, span, rawRows, resultRows, keys) {
|
|
|
221
516
|
|
|
222
517
|
c.visitOne = c.visitJoin;
|
|
223
518
|
|
|
224
|
-
c.visitMany = ()
|
|
519
|
+
c.visitMany = function (leg) {
|
|
520
|
+
const name = leg.name;
|
|
521
|
+
const table = span.table;
|
|
522
|
+
const relation = table._relations[name];
|
|
523
|
+
const filter = createOneFilter(relation, span._ids);
|
|
524
|
+
const rowsMap = span._rowsMap;
|
|
525
|
+
const p = getManyDto(relation.childTable, filter, strategy[name], leg.span).then(subRows => {
|
|
526
|
+
for (let i = 0; i < subRows.length; i++) {
|
|
527
|
+
const key = leg.columns.map(column => subRows[i][column.alias]);
|
|
528
|
+
const parentRow = getFromMap(rowsMap, table._primaryColumns, key);
|
|
529
|
+
parentRow[name].push(subRows[i]);
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
promises.push(p);
|
|
533
|
+
};
|
|
225
534
|
|
|
226
535
|
|
|
227
536
|
span.legs.forEach(onEachLeg);
|
|
@@ -233,47 +542,6 @@ async function decodeRelations2(strategy, span, rawRows, resultRows, keys) {
|
|
|
233
542
|
await Promise.all(promises);
|
|
234
543
|
}
|
|
235
544
|
|
|
236
|
-
|
|
237
|
-
// async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
|
|
238
|
-
// const promises = [];
|
|
239
|
-
// const c = {};
|
|
240
|
-
// c.visitJoin = function (leg) {
|
|
241
|
-
// const name = leg.name;
|
|
242
|
-
// const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
243
|
-
// for (let i = 0; i < rows.length; i++) {
|
|
244
|
-
// resultRows[i][name] = rows[i];
|
|
245
|
-
// }
|
|
246
|
-
// });
|
|
247
|
-
// promises.push(p);
|
|
248
|
-
// };
|
|
249
|
-
|
|
250
|
-
// c.visitOne = c.visitJoin;
|
|
251
|
-
|
|
252
|
-
// c.visitMany = function (leg) {
|
|
253
|
-
// const name = leg.name;
|
|
254
|
-
// const table = span.table;
|
|
255
|
-
// const relation = table._relations[name];
|
|
256
|
-
// const filter = createOneFilter(relation, span._ids);
|
|
257
|
-
// const rowsMap = span._rowsMap;
|
|
258
|
-
// const p = getManyDto(relation.childTable, filter, strategy[name], leg.span).then(subRows => {
|
|
259
|
-
// for (let i = 0; i < subRows.length; i++) {
|
|
260
|
-
// const key = leg.columns.map(column => subRows[i][column.alias]);
|
|
261
|
-
// const parentRow = getFromMap(rowsMap, table._primaryColumns, key);
|
|
262
|
-
// parentRow[name].push(subRows[i]);
|
|
263
|
-
// }
|
|
264
|
-
// });
|
|
265
|
-
// promises.push(p);
|
|
266
|
-
// };
|
|
267
|
-
|
|
268
|
-
// span.legs.forEach(onEachLeg);
|
|
269
|
-
|
|
270
|
-
// function onEachLeg(leg) {
|
|
271
|
-
// leg.accept(c);
|
|
272
|
-
// }
|
|
273
|
-
|
|
274
|
-
// await Promise.all(promises);
|
|
275
|
-
// }
|
|
276
|
-
|
|
277
545
|
function createOneFilter(relation, ids) {
|
|
278
546
|
const columns = relation.joinRelation.columns;
|
|
279
547
|
|