orange-orm 4.1.1 → 4.1.2
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 +1 -1
- package/src/getManyDto.js +17 -13
- package/src/tedious/outputInsertedSql.js +1 -1
package/docs/changelog.md
CHANGED
package/package.json
CHANGED
package/src/getManyDto.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
const emptyFilter = require('./emptyFilter');
|
|
1
2
|
const newQuery = require('./getManyDto/newQuery');
|
|
2
3
|
const negotiateRawSqlFilter = require('./table/column/negotiateRawSqlFilter');
|
|
3
4
|
const strategyToSpan = require('./table/strategyToSpan');
|
|
4
5
|
const executeQueries = require('./table/executeQueries');
|
|
5
|
-
const newPrimaryKeyFilter = require('./table/newPrimaryKeyFilter');
|
|
6
|
-
const newForeignKeyFilter = require('./table/relation/newForeignKeyFilter');
|
|
7
6
|
|
|
8
7
|
async function getManyDto(table, filter, strategy, spanFromParent) {
|
|
9
8
|
filter = negotiateRawSqlFilter(filter, table);
|
|
@@ -151,7 +150,7 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
|
|
|
151
150
|
function createGetIds() {
|
|
152
151
|
const primaryColumns = table._primaryColumns;
|
|
153
152
|
const length = primaryColumns.length;
|
|
154
|
-
if (length
|
|
153
|
+
if (length === 1) {
|
|
155
154
|
const alias = table._primaryColumns[0].alias;
|
|
156
155
|
return (row) => row[alias];
|
|
157
156
|
}
|
|
@@ -186,7 +185,7 @@ async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
|
|
|
186
185
|
const name = leg.name;
|
|
187
186
|
const table = span.table;
|
|
188
187
|
const relation = table._relations[name];
|
|
189
|
-
const filter = createOneFilter(relation, span._ids
|
|
188
|
+
const filter = createOneFilter(relation, span._ids);
|
|
190
189
|
const rowsMap = span._rowsMap;
|
|
191
190
|
const p = getManyDto(relation.childTable, filter, strategy[name], leg.span).then(subRows => {
|
|
192
191
|
for (let i = 0; i < subRows.length; i++) {
|
|
@@ -207,21 +206,26 @@ async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
|
|
|
207
206
|
await Promise.all(promises);
|
|
208
207
|
}
|
|
209
208
|
|
|
210
|
-
function createOneFilter(relation, ids
|
|
211
|
-
|
|
209
|
+
function createOneFilter(relation, ids) {
|
|
210
|
+
const columns = relation.joinRelation.columns;
|
|
212
211
|
|
|
213
|
-
if (
|
|
214
|
-
return
|
|
212
|
+
if (columns.length === 1)
|
|
213
|
+
return columns[0].in(ids);
|
|
215
214
|
|
|
216
215
|
else
|
|
217
216
|
return createCompositeFilter();
|
|
218
217
|
|
|
219
218
|
function createCompositeFilter() {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
219
|
+
let filter = emptyFilter;
|
|
220
|
+
for(let id of ids) {
|
|
221
|
+
let nextFilter;
|
|
222
|
+
for (let i = 0; i < columns.length; i++) {
|
|
223
|
+
if (nextFilter)
|
|
224
|
+
nextFilter = nextFilter.and(columns[i].eq(id[i]));
|
|
225
|
+
else
|
|
226
|
+
nextFilter = columns[i].eq(id[i]);
|
|
227
|
+
}
|
|
228
|
+
filter = filter.or(nextFilter);
|
|
225
229
|
}
|
|
226
230
|
return filter;
|
|
227
231
|
}
|
|
@@ -2,7 +2,7 @@ function outputInsertedSql(table) {
|
|
|
2
2
|
let separator = '';
|
|
3
3
|
let result = 'OUTPUT ';
|
|
4
4
|
for (let i = 0; i < table._columns.length; i++) {
|
|
5
|
-
result += separator + 'INSERTED.' + table._columns[i]._dbName;
|
|
5
|
+
result += separator + 'INSERTED.[' + table._columns[i]._dbName + ']';
|
|
6
6
|
separator = ',';
|
|
7
7
|
}
|
|
8
8
|
return result;
|