orange-orm 4.5.0-beta.1 → 4.5.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/README.md +21 -1
- package/package.json +3 -3
- package/src/applyPatch.js +12 -5
- package/src/client/index.mjs +13529 -6469
- package/src/client/rollup.config.js +24 -4
- package/src/client/stringify.js +2 -9
- package/src/createDomain.js +2 -18
- package/src/d1/newPool.js +1 -1
- package/src/d1/newTransaction.js +1 -0
- package/src/d1/pool/newGenericPool.js +1 -14
- package/src/format.js +9 -0
- package/src/generic-pool.js +274 -313
- package/src/getManyDto.js +52 -21
- package/src/hostExpress/executePath.js +2 -1
- package/src/hostExpress.js +2 -7
- package/src/hostLocal.js +1 -1
- package/src/index.js +2 -1
- package/src/indexBrowser.js +39 -0
- package/src/mssql/newPool.js +1 -1
- package/src/mssql/pool/newGenericPool.js +0 -12
- package/src/mySql/deleteFromSql.js +4 -4
- package/src/mySql/newPool.js +1 -1
- package/src/mySql/pool/newGenericPool.js +0 -12
- package/src/newId.js +2 -1
- package/src/oracle/deleteFromSql.js +4 -4
- package/src/oracle/newInsertCommandCore.js +2 -2
- package/src/oracle/newPool.js +1 -1
- package/src/oracle/pool/newGenericPool.js +0 -12
- package/src/package.json +5 -0
- package/src/pg/deleteFromSql.js +4 -4
- package/src/pg/newPool.js +1 -1
- package/src/pg/pool/newPgPool.js +0 -12
- package/src/promisify.js +24 -0
- package/src/sap/deleteFromSql.js +2 -2
- package/src/sap/newPool.js +1 -1
- package/src/sqlite/deleteFromSql.js +4 -4
- package/src/sqlite/newPool.js +1 -1
- package/src/sqlite/pool/newGenericPool.js +0 -13
- package/src/table/column/negotiateRawSqlFilter.js +1 -72
- package/src/table/column/newBoolean.js +2 -53
- package/src/table/column/utils.js +113 -0
- package/src/table/column.js +6 -2
- package/src/table/commands/newDeleteCommand.js +1 -6
- package/src/table/commands/newInsertCommand.js +5 -2
- package/src/table/commands/newInsertCommandCore.js +11 -11
- package/src/table/deleteSessionContext.js +0 -3
- package/src/table/executeQueries/resolveExecuteQuery.js +0 -7
- package/src/table/newCascadeDeleteStrategy.js +1 -7
- package/src/table/newRelatedTable.js +4 -10
- package/src/table/query/newParameterized.js +8 -11
- package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
- package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
- package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
- package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +1 -6
- package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +1 -7
- package/src/table/query/singleQuery/newJoinSql.js +4 -4
- package/src/table/relatedTable/aggregate.js +0 -6
- package/src/table/relatedTable/all.js +1 -7
- package/src/table/relatedTable/any.js +1 -8
- package/src/table/relatedTable/none.js +1 -7
- package/src/table/relatedTable/where.js +0 -6
- package/src/table/relation/newManyCache.js +11 -3
- package/src/table/resultToRows/dbRowToRow.js +2 -9
- package/src/table/resultToRows/delete/removeFromCache.js +2 -9
- package/src/table/resultToRows/newDecodeDbRow.js +0 -7
- package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
- package/src/table/tryGetSessionContext.js +0 -5
- package/src/table.js +0 -4
- package/src/tedious/deleteFromSql.js +4 -4
- package/src/tedious/getManyDto/newQueryCore.js +1 -1
- package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +2 -3
- package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +2 -3
- package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
- package/src/tedious/getManyDto/query/newSubQueries.js +8 -25
- package/src/tedious/newPool.js +1 -1
- package/src/tedious/pool/newGenericPool.js +0 -12
- package/src/validateDeleteConflict.js +11 -5
- package/src/createDomain/negotiateForwardProperty.js +0 -23
- package/src/table/createJSONReadStream.js +0 -7
- package/src/table/createJSONReadStreamDefault.js +0 -33
- package/src/table/createJSONReadStreamNative.js +0 -31
- package/src/table/createReadStream.js +0 -24
- package/src/table/createReadStreamCoreNative.js +0 -40
- package/src/table/createReadStreamDefault.js +0 -102
- package/src/table/createReadStreamNative.js +0 -17
- package/src/table/readStream/extractLimit.js +0 -7
- package/src/table/readStream/extractOrderBy.js +0 -59
- package/src/table/readStream/mySql/newQuery.js +0 -16
- package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
- package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
- package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
- package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
- package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
- package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
- package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
- package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
- package/src/table/readStream/newQuery.js +0 -32
- package/src/table/readStream/newQueryStream.js +0 -8
- package/src/table/readStream/pg/newQuery.js +0 -8
- package/src/table/readStream/pg/newQueryCore.js +0 -17
- package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
- package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries.js +0 -47
- package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
- package/src/table/readStreamDefault/createBatchFilter.js +0 -39
- package/src/useHook.js +0 -9
|
@@ -9,7 +9,7 @@ var setSessionSingleton = require('../setSessionSingleton');
|
|
|
9
9
|
|
|
10
10
|
function newManyCache(joinRelation) {
|
|
11
11
|
var c = {};
|
|
12
|
-
var key
|
|
12
|
+
var key;
|
|
13
13
|
|
|
14
14
|
c.tryAdd = function(context, parent, child) {
|
|
15
15
|
c.getInnerCache(context).tryAdd(parent, child);
|
|
@@ -25,10 +25,11 @@ function newManyCache(joinRelation) {
|
|
|
25
25
|
};
|
|
26
26
|
|
|
27
27
|
c.getInnerCache = function(context) {
|
|
28
|
-
|
|
28
|
+
const theKey = negotiateKey();
|
|
29
|
+
var cache = getSessionSingleton(context, theKey);
|
|
29
30
|
if (!cache) {
|
|
30
31
|
cache = newCacheCore(joinRelation);
|
|
31
|
-
setSessionSingleton(context,
|
|
32
|
+
setSessionSingleton(context, theKey, cache);
|
|
32
33
|
fillCache(context);
|
|
33
34
|
synchronizeAdded(context, c.tryAdd.bind(null, context), joinRelation);
|
|
34
35
|
synchronizeRemoved(context, c.tryRemove.bind(null, context), joinRelation);
|
|
@@ -49,6 +50,13 @@ function newManyCache(joinRelation) {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
|
|
53
|
+
function negotiateKey() {
|
|
54
|
+
if (key)
|
|
55
|
+
return key;
|
|
56
|
+
key = newId();
|
|
57
|
+
return key;
|
|
58
|
+
|
|
59
|
+
}
|
|
52
60
|
|
|
53
61
|
|
|
54
62
|
return c;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
var negotiateQueryContext = require('./negotiateQueryContext');
|
|
2
2
|
var decodeDbRow = require('./decodeDbRow');
|
|
3
|
-
var nextDbRowToRow = _nextDbRowToRow;
|
|
4
|
-
|
|
5
3
|
|
|
6
4
|
function dbRowToRow(context, span, dbRow) {
|
|
7
5
|
var table = span.table;
|
|
@@ -22,12 +20,12 @@ function dbRowToRow(context, span, dbRow) {
|
|
|
22
20
|
var c = {};
|
|
23
21
|
|
|
24
22
|
c.visitOne = function(leg) {
|
|
25
|
-
|
|
23
|
+
dbRowToRow(context, leg.span, dbRow);
|
|
26
24
|
leg.expand(row);
|
|
27
25
|
};
|
|
28
26
|
|
|
29
27
|
c.visitJoin = function(leg) {
|
|
30
|
-
|
|
28
|
+
dbRowToRow(context, leg.span, dbRow);
|
|
31
29
|
leg.expand(row);
|
|
32
30
|
};
|
|
33
31
|
|
|
@@ -43,9 +41,4 @@ function dbRowToRow(context, span, dbRow) {
|
|
|
43
41
|
return row;
|
|
44
42
|
}
|
|
45
43
|
|
|
46
|
-
function _nextDbRowToRow(context, span, dbRow) {
|
|
47
|
-
nextDbRowToRow = require('./dbRowToRow');
|
|
48
|
-
nextDbRowToRow(context, span, dbRow);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
44
|
module.exports = dbRowToRow;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
var nextRemoveFromCache = _nextRemoveFromCache;
|
|
2
|
-
|
|
3
1
|
function removeFromCache(context, row, strategy, table) {
|
|
4
2
|
if (Array.isArray(row)) {
|
|
5
3
|
removeManyRows();
|
|
@@ -10,7 +8,7 @@ function removeFromCache(context, row, strategy, table) {
|
|
|
10
8
|
|
|
11
9
|
function removeManyRows() {
|
|
12
10
|
row.forEach( function(rowToRemove) {
|
|
13
|
-
|
|
11
|
+
removeFromCache(context, rowToRemove, strategy, table);
|
|
14
12
|
});
|
|
15
13
|
}
|
|
16
14
|
|
|
@@ -19,15 +17,10 @@ function removeFromCache(context, row, strategy, table) {
|
|
|
19
17
|
for (var relationName in strategy) {
|
|
20
18
|
var relation = relations[relationName];
|
|
21
19
|
var rows = relation.getRowsSync(row);
|
|
22
|
-
|
|
20
|
+
removeFromCache(context, rows, strategy[relationName], relation.childTable);
|
|
23
21
|
}
|
|
24
22
|
table._cache.tryRemove(context, row);
|
|
25
23
|
}
|
|
26
24
|
}
|
|
27
25
|
|
|
28
|
-
function _nextRemoveFromCache(context, row, strategy, table) {
|
|
29
|
-
nextRemoveFromCache = require('./removeFromCache');
|
|
30
|
-
nextRemoveFromCache(context, row, strategy, table);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
26
|
module.exports = removeFromCache;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
let util = require('util');
|
|
2
1
|
let updateField = require('../updateField');
|
|
3
2
|
let newEmitEvent = require('../../emitEvent');
|
|
4
3
|
let extractStrategy = require('./toDto/extractStrategy');
|
|
@@ -204,12 +203,6 @@ function newDecodeDbRow(table, dbRow, filteredAliases, shouldValidate, isInsert)
|
|
|
204
203
|
return this;
|
|
205
204
|
};
|
|
206
205
|
|
|
207
|
-
|
|
208
|
-
Row.prototype[util.inspect.custom] = function() {
|
|
209
|
-
let dtos = toDto(undefined, table, this, new Set());
|
|
210
|
-
return util.inspect(dtos, { compact: false, colors: true });
|
|
211
|
-
};
|
|
212
|
-
|
|
213
206
|
function decodeDbRow(context, row) {
|
|
214
207
|
for (let i = 0; i < numberOfColumns; i++) {
|
|
215
208
|
let index = offset + i;
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
let extractSubStrategy = _extractSubStrategy;
|
|
2
|
-
|
|
3
1
|
//either..
|
|
4
2
|
//strategy, table
|
|
5
3
|
//or..
|
|
@@ -21,7 +19,7 @@ function extractStrategy(_strategyOrTable, _optinonalTable) {
|
|
|
21
19
|
visitor.visitJoin = function() { };
|
|
22
20
|
|
|
23
21
|
visitor.visitMany = function(relation) {
|
|
24
|
-
strategy[relationName] =
|
|
22
|
+
strategy[relationName] = extractStrategy(relation.childTable);
|
|
25
23
|
};
|
|
26
24
|
|
|
27
25
|
visitor.visitOne = visitor.visitMany;
|
|
@@ -33,9 +31,5 @@ function extractStrategy(_strategyOrTable, _optinonalTable) {
|
|
|
33
31
|
return strategy;
|
|
34
32
|
}
|
|
35
33
|
|
|
36
|
-
function _extractSubStrategy(table) {
|
|
37
|
-
extractSubStrategy = require('./extractStrategy');
|
|
38
|
-
return extractSubStrategy(table);
|
|
39
|
-
}
|
|
40
34
|
|
|
41
35
|
module.exports = extractStrategy;
|
package/src/table.js
CHANGED
|
@@ -14,8 +14,6 @@ const newContext = require('./newObject');
|
|
|
14
14
|
const insert = require('./table/insert');
|
|
15
15
|
const _delete = require('./table/delete');
|
|
16
16
|
const cascadeDelete = require('./table/cascadeDelete');
|
|
17
|
-
const createReadStream = require('./table/createReadStream');
|
|
18
|
-
const createJSONReadStream = require('./table/createJSONReadStream');
|
|
19
17
|
const patchTable = require('./patchTable');
|
|
20
18
|
const newEmitEvent = require('./emitEvent');
|
|
21
19
|
const hostLocal = require('./hostLocal');
|
|
@@ -150,8 +148,6 @@ function _new(tableName) {
|
|
|
150
148
|
};
|
|
151
149
|
|
|
152
150
|
table.deleteCascade = table.cascadeDelete;
|
|
153
|
-
table.createReadStream = createReadStream.bind(null, table); //legacy
|
|
154
|
-
table.createJSONReadStream = createJSONReadStream.bind(null, table); //legacy
|
|
155
151
|
table.exclusive = function() {
|
|
156
152
|
table._exclusive = true;
|
|
157
153
|
return table;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const format = 'delete %s from %s as %s%s';
|
|
2
|
+
const formatString = require('../format');
|
|
3
3
|
const quote = require('./quote');
|
|
4
4
|
|
|
5
5
|
function deleteFromSql(table, alias, whereSql) {
|
|
6
|
-
|
|
6
|
+
const name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias);
|
|
8
|
-
return
|
|
8
|
+
return formatString(format, alias, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
|
@@ -11,7 +11,7 @@ function newQuery(context, table, filter, span, alias) {
|
|
|
11
11
|
var limit = extractLimit(context, span);
|
|
12
12
|
var offset = limitAndOffset(span);
|
|
13
13
|
|
|
14
|
-
var subQueries = newSubQueries(context, table, span, alias);
|
|
14
|
+
var subQueries = newSubQueries(newQuery, context, table, span, alias);
|
|
15
15
|
return newSingleQuery(context, table, filter, span, alias, subQueries, orderBy, limit, offset);
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
var newQuery = require('../../newQueryCore');
|
|
1
|
+
const newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
|
|
3
2
|
|
|
4
|
-
function joinLegToQuery(context, parentAlias, leg, _legNo) {
|
|
3
|
+
function joinLegToQuery(newQuery, context, parentAlias, leg, _legNo) {
|
|
5
4
|
var childAlias = parentAlias + leg.name;
|
|
6
5
|
var span = leg.span;
|
|
7
6
|
var parentTable = leg.table;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
var newQuery = require('../../newQueryCore');
|
|
1
|
+
const newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
|
|
3
2
|
|
|
4
|
-
function manyLegToQuery(context, rightAlias, leg, _legNo) {
|
|
3
|
+
function manyLegToQuery(newQuery, context, rightAlias, leg, _legNo) {
|
|
5
4
|
var leftAlias = rightAlias + leg.name;
|
|
6
5
|
var span = leg.span;
|
|
7
6
|
var rightTable = leg.table;
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var util = require('util');
|
|
1
|
+
const newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
|
|
2
|
+
const newParameterized = require('../../../../table/query/newParameterized');
|
|
3
|
+
const formatString = require('../../../../format');
|
|
5
4
|
|
|
6
|
-
function oneLegToQuery(context, rightAlias, leg, _legNo) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
function oneLegToQuery(newQuery, context, rightAlias, leg, _legNo) {
|
|
6
|
+
let leftAlias = rightAlias + leg.name;
|
|
7
|
+
let span = leg.span;
|
|
8
|
+
let rightTable = leg.table;
|
|
9
|
+
let rightColumns = rightTable._primaryColumns;
|
|
10
|
+
let leftColumns = leg.columns;
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return newParameterized(
|
|
12
|
+
let filter = newShallowJoinSql(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, leg.span.where);
|
|
13
|
+
let query = newQuery(context, span.table, filter, span, leftAlias);
|
|
14
|
+
let sql = 'SELECT TOP 1' + query.sql().substring(6);
|
|
15
|
+
return newParameterized(formatString('JSON_QUERY((%s FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER)) "%s"', sql, leg.name), query.parameters);
|
|
17
16
|
}
|
|
18
17
|
|
|
19
18
|
module.exports = oneLegToQuery;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const newParameterized = require('../../../table/query/newParameterized');
|
|
2
|
+
const joinLegToQuery = require('./newSubQueries/joinLegToQuery');
|
|
3
|
+
const oneLegToQuery = require('./newSubQueries/oneLegToQuery');
|
|
4
|
+
const manyLegToQuery = require('./newSubQueries/manyLegToQuery');
|
|
5
5
|
|
|
6
|
-
function newSubQueries(context, _table, span, alias) {
|
|
6
|
+
function newSubQueries(newQuery, context, _table, span, alias) {
|
|
7
7
|
var result = newParameterized('', []);
|
|
8
8
|
var c = {};
|
|
9
9
|
var _legNo;
|
|
10
10
|
|
|
11
11
|
c.visitJoin = function(leg) {
|
|
12
|
-
result = result.append(',').append(joinLegToQuery(context, alias, leg, _legNo));
|
|
12
|
+
result = result.append(',').append(joinLegToQuery(newQuery, context, alias, leg, _legNo));
|
|
13
13
|
};
|
|
14
14
|
c.visitOne = function(leg) {
|
|
15
|
-
result = result.append(',').append(oneLegToQuery(context, alias, leg, _legNo));
|
|
15
|
+
result = result.append(',').append(oneLegToQuery(newQuery, context, alias, leg, _legNo));
|
|
16
16
|
};
|
|
17
17
|
c.visitMany = function(leg) {
|
|
18
|
-
result = result.append(',').append(manyLegToQuery(context, alias, leg, _legNo));
|
|
18
|
+
result = result.append(',').append(manyLegToQuery(newQuery, context, alias, leg, _legNo));
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
span.legs.forEach(onEachLeg);
|
|
@@ -28,21 +28,4 @@ function newSubQueries(context, _table, span, alias) {
|
|
|
28
28
|
return result;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
function _joinLegToQuery() {
|
|
32
|
-
joinLegToQuery = require('./newSubQueries/joinLegToQuery');
|
|
33
|
-
return joinLegToQuery.apply(null, arguments);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function _oneLegToQuery() {
|
|
37
|
-
oneLegToQuery = require('./newSubQueries/oneLegToQuery');
|
|
38
|
-
return oneLegToQuery.apply(null, arguments);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function _manyLegToQuery() {
|
|
42
|
-
manyLegToQuery = require('./newSubQueries/manyLegToQuery');
|
|
43
|
-
return manyLegToQuery.apply(null, arguments);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
31
|
module.exports = newSubQueries;
|
package/src/tedious/newPool.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
/* eslint-disable no-prototype-builtins */
|
|
3
|
-
var EventEmitter = require('events').EventEmitter;
|
|
4
3
|
|
|
5
4
|
var defaults = require('../../poolDefaults');
|
|
6
5
|
var genericPool = require('../../generic-pool');
|
|
@@ -40,20 +39,9 @@ function newGenericPool(connectionString, poolOptions) {
|
|
|
40
39
|
client.close();
|
|
41
40
|
}
|
|
42
41
|
});
|
|
43
|
-
//mixin EventEmitter to pool
|
|
44
|
-
EventEmitter.call(pool);
|
|
45
|
-
for (var key in EventEmitter.prototype) {
|
|
46
|
-
if (EventEmitter.prototype.hasOwnProperty(key)) {
|
|
47
|
-
pool[key] = EventEmitter.prototype[key];
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
42
|
//monkey-patch with connect method
|
|
51
43
|
pool.connect = function(cb) {
|
|
52
|
-
var domain = process.domain;
|
|
53
44
|
pool.acquire(function(err, client) {
|
|
54
|
-
if (domain) {
|
|
55
|
-
cb = domain.bind(cb);
|
|
56
|
-
}
|
|
57
45
|
if (err) return cb(err, null, function() {/*NOOP*/ });
|
|
58
46
|
client.poolCount++;
|
|
59
47
|
cb(null, client, function(err) {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
/* eslint-disable */
|
|
3
|
-
let { inspect } = require('util');
|
|
4
|
-
let assert = require('assert');
|
|
5
3
|
const toCompareObject = require('./toCompareObject');
|
|
6
4
|
|
|
7
5
|
async function validateDeleteConflict({ row, oldValue, options, table }) {
|
|
@@ -16,10 +14,10 @@ async function validateDeleteConflict({ row, oldValue, options, table }) {
|
|
|
16
14
|
assertDatesEqual(oldValue[p], toCompareObject(row[p]));
|
|
17
15
|
}
|
|
18
16
|
else
|
|
19
|
-
|
|
17
|
+
assertDeepEqual(oldValue[p], toCompareObject(row[p]));
|
|
20
18
|
}
|
|
21
19
|
catch (e) {
|
|
22
|
-
throw new Error(`The field ${p} was changed by another user. Expected ${inspect(oldValue[p]
|
|
20
|
+
throw new Error(`The field ${p} was changed by another user. Expected ${inspect(oldValue[p])}, but was ${inspect(row[p])}.`);
|
|
23
21
|
}
|
|
24
22
|
}
|
|
25
23
|
}
|
|
@@ -85,8 +83,16 @@ function assertDatesEqual(date1, date2) {
|
|
|
85
83
|
date1 = `${parts1[0]}T${time1parts[0]}`;
|
|
86
84
|
date2 = `${parts2[0]}T${time2parts[0]}`;
|
|
87
85
|
}
|
|
88
|
-
|
|
86
|
+
assertDeepEqual(date1, date2);
|
|
89
87
|
}
|
|
90
88
|
|
|
89
|
+
function assertDeepEqual(a, b) {
|
|
90
|
+
if (JSON.stringify(a) !== JSON.stringify(b))
|
|
91
|
+
throw new Error('A, b are not equal');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function inspect(obj) {
|
|
95
|
+
return JSON.stringify(obj, null, 2);
|
|
96
|
+
}
|
|
91
97
|
|
|
92
98
|
module.exports = validateDeleteConflict;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
function negotiateForwardProperty(oldDomain, newDomain, propertyName) {
|
|
2
|
-
if(newDomain[propertyName]) return;
|
|
3
|
-
if (propertyName === 'rdb') return;
|
|
4
|
-
Object.defineProperty(newDomain, propertyName, {
|
|
5
|
-
enumerable: true,
|
|
6
|
-
get: createGetter(oldDomain, propertyName),
|
|
7
|
-
set: createSetter(oldDomain, propertyName)
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function createGetter(oldDomain, propName) {
|
|
12
|
-
return function() {
|
|
13
|
-
return oldDomain[propName];
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function createSetter(oldDomain, propName) {
|
|
18
|
-
return function(value) {
|
|
19
|
-
oldDomain[propName] = value;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
module.exports = negotiateForwardProperty;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
var createJSONReadStreamDefault = require('./createJSONReadStreamDefault');
|
|
2
|
-
|
|
3
|
-
function createJSONReadStream(table, db, filter, strategy, streamOptions) {
|
|
4
|
-
return createJSONReadStreamDefault(table, db, filter, strategy, streamOptions);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
module.exports = createJSONReadStream;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
var createReadStreamCore = require('./createReadStreamDefault');
|
|
2
|
-
var Stream = require('stream');
|
|
3
|
-
|
|
4
|
-
function createJSONReadStream(table, db, filter, strategy, streamOptions) {
|
|
5
|
-
var transformer = Stream.Transform({ objectMode: true });
|
|
6
|
-
var started;
|
|
7
|
-
transformer._transform = function(obj, enc, cb) {
|
|
8
|
-
var data = JSON.stringify(obj);
|
|
9
|
-
if (started)
|
|
10
|
-
transformer.push(',' + data);
|
|
11
|
-
else {
|
|
12
|
-
transformer.push('[');
|
|
13
|
-
transformer.push(data);
|
|
14
|
-
started = true;
|
|
15
|
-
}
|
|
16
|
-
cb();
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
transformer._flush = function(cb) {
|
|
20
|
-
transformer.push(']');
|
|
21
|
-
cb();
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
var objectStream = createReadStreamCore(table, db, filter, strategy, streamOptions);
|
|
25
|
-
objectStream.on('error', onError);
|
|
26
|
-
return objectStream.pipe(transformer);
|
|
27
|
-
|
|
28
|
-
function onError(e) {
|
|
29
|
-
transformer.emit('error', e);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
module.exports = createJSONReadStream;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
var createReadStreamCore = require('./createReadStreamCoreNative');
|
|
2
|
-
var Stream = require('stream');
|
|
3
|
-
|
|
4
|
-
function createJSONReadStream(table, db, filter, strategy, streamOptions) {
|
|
5
|
-
var transformer = Stream.Transform({
|
|
6
|
-
objectMode: true
|
|
7
|
-
});
|
|
8
|
-
var started;
|
|
9
|
-
transformer._transform = function(chunk, enc, cb) {
|
|
10
|
-
if (started)
|
|
11
|
-
transformer.push(',' + chunk.result);
|
|
12
|
-
else {
|
|
13
|
-
transformer.push('[');
|
|
14
|
-
let result = chunk.result;
|
|
15
|
-
if (typeof result === 'object')
|
|
16
|
-
result = JSON.stringify(result);
|
|
17
|
-
transformer.push(result);
|
|
18
|
-
started = true;
|
|
19
|
-
}
|
|
20
|
-
cb();
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
transformer._flush = function(cb) {
|
|
24
|
-
transformer.push(']');
|
|
25
|
-
cb();
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
return createReadStreamCore(table, db, filter, strategy, transformer, streamOptions);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
module.exports = createJSONReadStream;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
var createReadStreamNative = require('./createReadStreamNative');
|
|
2
|
-
var createReadStreamDefault = require('./createReadStreamDefault');
|
|
3
|
-
|
|
4
|
-
function createReadStream(table, db, filter, strategy, streamOptions) {
|
|
5
|
-
var create;
|
|
6
|
-
var c = {};
|
|
7
|
-
|
|
8
|
-
c.visitPg = function() {
|
|
9
|
-
create = createReadStreamNative;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
c.visitMySql = c.visitPg;
|
|
13
|
-
|
|
14
|
-
c.visitSqlite = function() {
|
|
15
|
-
create = createReadStreamDefault;
|
|
16
|
-
};
|
|
17
|
-
c.visitSap = c.visitSqlite;
|
|
18
|
-
|
|
19
|
-
db.accept(c);
|
|
20
|
-
|
|
21
|
-
return create(table, db, filter, strategy, streamOptions);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
module.exports = createReadStream;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
var newQuery = require('./readStream/newQuery');
|
|
2
|
-
var strategyToSpan = require('./strategyToSpan');
|
|
3
|
-
var negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
|
|
4
|
-
var newQueryStream = require('./readStream/newQueryStream');
|
|
5
|
-
|
|
6
|
-
function createReadStreamCoreNative(table, db, filter, strategy, transformer, streamOptions) {
|
|
7
|
-
var alias = table._dbName;
|
|
8
|
-
filter = negotiateRawSqlFilter(filter, table);
|
|
9
|
-
var span = strategyToSpan(table, strategy);
|
|
10
|
-
|
|
11
|
-
if (process.domain)
|
|
12
|
-
process.domain.add(transformer);
|
|
13
|
-
|
|
14
|
-
db.transaction(async () => {
|
|
15
|
-
await start();
|
|
16
|
-
}).then(null, onError);
|
|
17
|
-
|
|
18
|
-
function start() {
|
|
19
|
-
return new Promise((resolve, reject) => {
|
|
20
|
-
var query = newQuery(db, table, filter, span, alias);
|
|
21
|
-
var queryStream = newQueryStream(query, streamOptions);
|
|
22
|
-
queryStream.on('end', resolve);
|
|
23
|
-
queryStream.on('error', onStreamError);
|
|
24
|
-
queryStream.pipe(transformer);
|
|
25
|
-
|
|
26
|
-
function onStreamError(e) {
|
|
27
|
-
reject(e);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function onError(e) {
|
|
34
|
-
transformer.emit('error', e);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return transformer;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
module.exports = createReadStreamCoreNative;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
var extractFilter = require('./query/extractFilter');
|
|
2
|
-
var cloneStrategy = require('./cloneStrategy');
|
|
3
|
-
var defaultBatchSize = 200;
|
|
4
|
-
var Readable = require('stream').Readable;
|
|
5
|
-
var createBatchFilter = require('./readStreamDefault/createBatchFilter');
|
|
6
|
-
|
|
7
|
-
function createReadStream(table, db, filter, strategy, streamOptions) {
|
|
8
|
-
filter = extractFilter(filter);
|
|
9
|
-
var batchFilter;
|
|
10
|
-
strategy = cloneStrategy(strategy);
|
|
11
|
-
calculateOrderBy();
|
|
12
|
-
streamOptions = streamOptions || {};
|
|
13
|
-
var batchSize = streamOptions.batchSize || defaultBatchSize;
|
|
14
|
-
batchSize = (batchSize + 1) / 2 >> 0;
|
|
15
|
-
var maxRows = strategy.limit;
|
|
16
|
-
var currentRowCount = 0;
|
|
17
|
-
var busy;
|
|
18
|
-
var waitingforMore;
|
|
19
|
-
var dtos = [];
|
|
20
|
-
var lastDto;
|
|
21
|
-
var done;
|
|
22
|
-
|
|
23
|
-
var stream = Readable({ objectMode: true });
|
|
24
|
-
stream._read = function() {
|
|
25
|
-
waitingforMore = true;
|
|
26
|
-
if (!busy) {
|
|
27
|
-
if (dtos.length > 0)
|
|
28
|
-
negotiatePushStream();
|
|
29
|
-
else
|
|
30
|
-
getDtos();
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
if (process.domain)
|
|
34
|
-
process.domain.add(stream);
|
|
35
|
-
|
|
36
|
-
function getDtos() {
|
|
37
|
-
busy = true;
|
|
38
|
-
return db.transaction(async () => {
|
|
39
|
-
await getBatch()
|
|
40
|
-
.then(onDtos);
|
|
41
|
-
})
|
|
42
|
-
.then(negotiatePushStream, onError);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function onDtos(result) {
|
|
46
|
-
busy = false;
|
|
47
|
-
currentRowCount += result.length;
|
|
48
|
-
lastDto = result[result.length - 1];
|
|
49
|
-
dtos = dtos.concat(result);
|
|
50
|
-
if (currentRowCount >= maxRows || result.length < batchSize) {
|
|
51
|
-
dtos.push(null);
|
|
52
|
-
done = true;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function negotiatePushStream() {
|
|
57
|
-
if (dtos.length <= batchSize && !done)
|
|
58
|
-
getDtos();
|
|
59
|
-
if (!waitingforMore)
|
|
60
|
-
return;
|
|
61
|
-
waitingforMore = false;
|
|
62
|
-
stream.push(dtos.shift());
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function getBatch() {
|
|
66
|
-
calculateLimit();
|
|
67
|
-
calculateBatchFilter();
|
|
68
|
-
return table.getMany(batchFilter, strategy);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function calculateLimit() {
|
|
72
|
-
if (maxRows === undefined || maxRows === null)
|
|
73
|
-
strategy.limit = batchSize;
|
|
74
|
-
else {
|
|
75
|
-
var rowsLeft = maxRows - currentRowCount;
|
|
76
|
-
strategy.limit = Math.min(rowsLeft, batchSize);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function calculateOrderBy() {
|
|
81
|
-
strategy.orderBy = strategy.orderBy || [];
|
|
82
|
-
if (typeof strategy.orderBy === 'string') {
|
|
83
|
-
strategy.orderBy = [strategy.orderBy];
|
|
84
|
-
}
|
|
85
|
-
var primaryColumns = table._primaryColumns;
|
|
86
|
-
for (var i = 0; i < primaryColumns.length; i++) {
|
|
87
|
-
strategy.orderBy.push(primaryColumns[i].alias);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function calculateBatchFilter() {
|
|
92
|
-
batchFilter = createBatchFilter(table, filter, strategy, lastDto);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function onError(e) {
|
|
96
|
-
stream.emit('error', e);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return stream;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
module.exports = createReadStream;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
var createReadStreamCore = require('./createReadStreamCoreNative');
|
|
2
|
-
var Stream = require('stream');
|
|
3
|
-
|
|
4
|
-
function createReadStreamNative(table, db, filter, strategy, streamOptions) {
|
|
5
|
-
var transformer = Stream.Transform({ objectMode: true });
|
|
6
|
-
transformer._transform = function(chunk, _enc, cb) {
|
|
7
|
-
let result = chunk.result;
|
|
8
|
-
if (typeof result === 'string')
|
|
9
|
-
result = JSON.parse(result);
|
|
10
|
-
transformer.push(result);
|
|
11
|
-
cb();
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
return createReadStreamCore(table, db, filter, strategy, transformer, streamOptions);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
module.exports = createReadStreamNative;
|