orange-orm 4.3.0-beta.3 → 4.3.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/docs/changelog.md +2 -0
- package/package.json +4 -4
- package/src/client/index.mjs +784 -373
- package/src/getManyDto.js +69 -337
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
|
|
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
|
|
61
|
+
c.visitJoin = function(leg) {
|
|
62
62
|
obj[leg.name] = null;
|
|
63
63
|
};
|
|
64
64
|
c.visitOne = c.visitJoin;
|
|
65
|
-
c.visitMany = function
|
|
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,52 +108,35 @@ 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
|
-
|
|
113
111
|
for (let i = 0; i < rowsLength; i++) {
|
|
114
112
|
const row = rows[i];
|
|
115
113
|
let outRow = createRow();
|
|
116
114
|
let pkWithNullCount = 0;
|
|
117
|
-
for (let j = 0; j <
|
|
118
|
-
if (
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
for (let j = 0; j < columnsLength; j++) {
|
|
116
|
+
if (j < primaryColumnsLength) {
|
|
117
|
+
if (row[keys[j]] === null)
|
|
118
|
+
pkWithNullCount++;
|
|
119
|
+
if (pkWithNullCount === primaryColumnsLength) {
|
|
120
|
+
outRow = null;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
123
|
}
|
|
124
124
|
const column = columns[j];
|
|
125
125
|
outRow[column.alias] = column.decode(row[keys[j]]);
|
|
126
|
+
}
|
|
126
127
|
|
|
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]]);
|
|
127
132
|
}
|
|
128
133
|
|
|
129
|
-
|
|
134
|
+
outRows[i] = outRow;
|
|
135
|
+
if (shouldCreateMap) {
|
|
130
136
|
fkIds[i] = getIds(outRow);
|
|
131
137
|
addToMap(rowsMap, primaryColumns, outRow);
|
|
132
138
|
}
|
|
133
|
-
outRows[i] = outRow;
|
|
134
139
|
}
|
|
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
|
-
|
|
157
140
|
span._rowsMap = rowsMap;
|
|
158
141
|
span._ids = fkIds;
|
|
159
142
|
|
|
@@ -161,107 +144,15 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
|
|
|
161
144
|
if (span.legs.toArray().length === 0)
|
|
162
145
|
return outRows;
|
|
163
146
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
}
|
|
147
|
+
const all = [];
|
|
148
|
+
|
|
149
|
+
if (shouldCreateMap)
|
|
150
|
+
all.push(decodeManyRelations(strategy, span).then(() => decodeRelations2(strategy, span, rows, outRows, keys)));
|
|
226
151
|
else
|
|
227
152
|
all.push(decodeRelations2(strategy, span, rows, outRows, keys));
|
|
228
153
|
|
|
229
|
-
|
|
230
154
|
await Promise.all(all);
|
|
231
155
|
|
|
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
|
-
|
|
265
156
|
return outRows;
|
|
266
157
|
|
|
267
158
|
|
|
@@ -283,79 +174,14 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
|
|
|
283
174
|
}
|
|
284
175
|
|
|
285
176
|
}
|
|
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
177
|
|
|
324
|
-
async function
|
|
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
|
-
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
async function decodeManyRelations(strategy, span, rawRows, resultRows, keys) {
|
|
178
|
+
async function decodeManyRelations(strategy, span) {
|
|
353
179
|
const promises = [];
|
|
354
180
|
const c = {};
|
|
355
181
|
c.visitJoin = () => { };
|
|
356
182
|
c.visitOne = c.visitJoin;
|
|
357
183
|
|
|
358
|
-
c.visitMany = function
|
|
184
|
+
c.visitMany = function(leg) {
|
|
359
185
|
const name = leg.name;
|
|
360
186
|
const table = span.table;
|
|
361
187
|
const relation = table._relations[name];
|
|
@@ -377,134 +203,13 @@ async function decodeManyRelations(strategy, span, rawRows, resultRows, keys) {
|
|
|
377
203
|
leg.accept(c);
|
|
378
204
|
}
|
|
379
205
|
|
|
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
|
-
|
|
407
206
|
await Promise.all(promises);
|
|
408
207
|
}
|
|
409
208
|
|
|
410
|
-
async function
|
|
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) {
|
|
209
|
+
async function decodeRelations2(strategy, span, rawRows, resultRows, keys) {
|
|
505
210
|
const promises = [];
|
|
506
211
|
const c = {};
|
|
507
|
-
c.visitJoin = function
|
|
212
|
+
c.visitJoin = function(leg) {
|
|
508
213
|
const name = leg.name;
|
|
509
214
|
const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
|
|
510
215
|
for (let i = 0; i < rows.length; i++) {
|
|
@@ -516,21 +221,7 @@ async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
|
|
|
516
221
|
|
|
517
222
|
c.visitOne = c.visitJoin;
|
|
518
223
|
|
|
519
|
-
c.visitMany =
|
|
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
|
-
};
|
|
224
|
+
c.visitMany = () => { };
|
|
534
225
|
|
|
535
226
|
|
|
536
227
|
span.legs.forEach(onEachLeg);
|
|
@@ -542,6 +233,47 @@ async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
|
|
|
542
233
|
await Promise.all(promises);
|
|
543
234
|
}
|
|
544
235
|
|
|
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
|
+
|
|
545
277
|
function createOneFilter(relation, ids) {
|
|
546
278
|
const columns = relation.joinRelation.columns;
|
|
547
279
|
|