orange-orm 4.4.2 → 4.5.0-beta.1
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 +1 -1
- package/package.json +12 -6
- package/src/client/clientMap.js +2 -0
- package/src/client/createProviders.js +12 -0
- package/src/client/index.js +6 -3
- package/src/client/index.mjs +8 -3
- package/src/client/map.js +1 -0
- package/src/createDomain.js +11 -16
- package/src/d1/newDatabase.js +119 -0
- package/src/d1/newPool.js +19 -0
- package/src/d1/newTransaction.js +82 -0
- package/src/d1/pool/end.js +13 -0
- package/src/d1/pool/newGenericPool.js +53 -0
- package/src/d1/wrapQuery.js +22 -0
- package/src/d1test.js +35 -0
- package/src/emitEvent.js +6 -4
- package/src/emptyFilter.js +12 -12
- package/src/getManyDto/newQuery.js +5 -5
- package/src/getManyDto/query/newSingleQuery.js +5 -5
- package/src/getManyDto.js +25 -24
- package/src/hostExpress/cycle.ts +211 -0
- package/src/hostExpress/executePath.js +360 -357
- package/src/hostLocal.js +8 -8
- package/src/index.d.ts +2 -0
- package/src/index.js +19 -15
- package/src/map.d.ts +3 -0
- package/src/mssql/newDatabase.js +19 -31
- package/src/mssql/newPool.js +2 -2
- package/src/mssql/newTransaction.js +5 -4
- package/src/mssql/pool/newGenericPool.js +1 -1
- package/src/mySql/deleteFromSql.js +1 -1
- package/src/mySql/insert.js +5 -5
- package/src/mySql/insertSql.js +2 -3
- package/src/mySql/lastInsertedSql.js +3 -4
- package/src/mySql/newDatabase.js +20 -34
- package/src/mySql/newPool.js +10 -10
- package/src/mySql/newTransaction.js +3 -3
- package/src/mySql/pool/newGenericPool.js +2 -3
- package/src/mySql/quote.js +1 -0
- package/src/newImmutable.js +1 -2
- package/src/oracle/deleteFromSql.js +1 -1
- package/src/oracle/formatDateOut.js +1 -1
- package/src/oracle/insert.js +6 -6
- package/src/oracle/insertSql.js +6 -14
- package/src/oracle/lastInsertedSql.js +3 -3
- package/src/oracle/mergeSql.js +3 -6
- package/src/oracle/newDatabase.js +18 -33
- package/src/oracle/newInsertCommandCore.js +3 -3
- package/src/oracle/newPool.js +10 -10
- package/src/oracle/newTransaction.js +3 -2
- package/src/oracle/pool/newGenericPool.js +2 -2
- package/src/oracle/quote.js +1 -0
- package/src/oracle/wrapQuery.js +0 -3
- package/src/patchRow.js +2 -2
- package/src/patchTable.js +6 -5
- package/src/pg/deleteFromSql.js +1 -1
- package/src/pg/formatDateOut.js +1 -2
- package/src/pg/insert.js +3 -3
- package/src/pg/insertSql.js +2 -7
- package/src/pg/lastInsertedSql.js +1 -2
- package/src/pg/newDatabase.js +20 -37
- package/src/pg/newPool.js +10 -10
- package/src/pg/newTransaction.js +3 -2
- package/src/pg/pool/newPgPool.js +2 -2
- package/src/pg/quote.js +2 -0
- package/src/pg/schema.js +2 -2
- package/src/{mySql/pool/defaults.js → poolDefaults.js} +0 -2
- package/src/query.js +2 -2
- package/src/sap/deleteFromSql.js +1 -1
- package/src/sap/formatDateOut.js +1 -1
- package/src/sap/insert.js +5 -5
- package/src/sap/insertSql.js +4 -5
- package/src/sap/lastInsertedSql.js +3 -3
- package/src/sap/mergeSql.js +1 -2
- package/src/sap/newDatabase.js +23 -34
- package/src/sap/newPool.js +2 -2
- package/src/sap/newTransaction.js +3 -2
- package/src/sap/quote.js +1 -0
- package/src/sqlite/deleteFromSql.js +1 -1
- package/src/sqlite/insert.js +5 -5
- package/src/sqlite/insertSql.js +2 -2
- package/src/sqlite/lastInsertedSql.js +2 -2
- package/src/sqlite/newDatabase.js +16 -32
- package/src/sqlite/newPool.js +10 -10
- package/src/sqlite/newTransaction.js +3 -2
- package/src/sqlite/pool/newGenericPool.js +2 -1
- package/src/sqlite/quote.js +1 -0
- package/src/table/aggregate.js +1 -1
- package/src/table/begin.js +5 -5
- package/src/table/cascadeDelete.js +2 -2
- package/src/table/column/binary/newDecode.js +2 -2
- package/src/table/column/binary/newEncode.js +3 -4
- package/src/table/column/boolean/newDecode.js +1 -1
- package/src/table/column/boolean/newEncode.js +6 -6
- package/src/table/column/date/formatOut.js +3 -5
- package/src/table/column/date/newDecode.js +2 -2
- package/src/table/column/date/newEncode.js +8 -8
- package/src/table/column/date.js +1 -1
- package/src/table/column/dateWithTimeZone/newEncode.js +3 -4
- package/src/table/column/dateWithTimeZone.js +1 -1
- package/src/table/column/encodeFilterArg.js +3 -3
- package/src/table/column/equal.js +3 -3
- package/src/table/column/extractAlias.js +0 -2
- package/src/table/column/greaterThan.js +3 -3
- package/src/table/column/greaterThanOrEqual.js +3 -3
- package/src/table/column/guid/newDecode.js +1 -1
- package/src/table/column/guid/newEncode.js +3 -3
- package/src/table/column/in.js +3 -3
- package/src/table/column/json/formatOut.js +3 -3
- package/src/table/column/json/newDecode.js +3 -3
- package/src/table/column/json/newEncode.js +6 -6
- package/src/table/column/json.js +2 -1
- package/src/table/column/lessThan.js +3 -3
- package/src/table/column/lessThanOrEqual.js +4 -4
- package/src/table/column/negotiateRawSqlFilter.js +9 -9
- package/src/table/column/newBoolean.js +9 -9
- package/src/table/column/newColumn.js +21 -21
- package/src/table/column/newDecodeCore.js +1 -1
- package/src/table/column/notEqual.js +3 -3
- package/src/table/column/numeric/newDecode.js +2 -2
- package/src/table/column/numeric/newEncode.js +3 -3
- package/src/table/column/string/contains.js +2 -1
- package/src/table/column/string/containsCore.js +5 -5
- package/src/table/column/string/endsWith.js +1 -1
- package/src/table/column/string/endsWithCore.js +4 -4
- package/src/table/column/string/iContains.js +2 -1
- package/src/table/column/string/iEndsWith.js +1 -1
- package/src/table/column/string/iEqual.js +3 -3
- package/src/table/column/string/iStartsWith.js +1 -1
- package/src/table/column/string/newEncode.js +3 -3
- package/src/table/column/string/startsWith.js +1 -1
- package/src/table/column/string/startsWithCore.js +4 -4
- package/src/table/column/string.js +14 -14
- package/src/table/commands/beginCommand.js +2 -2
- package/src/table/commands/compressChanges.js +2 -2
- package/src/table/commands/delete/newSingleCommand.js +5 -5
- package/src/table/commands/delete/singleCommand/joinSql.js +12 -12
- package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +2 -2
- package/src/table/commands/delete/singleCommand/selectSql.js +6 -6
- package/src/table/commands/delete/singleCommand/subFilter.js +11 -11
- package/src/table/commands/delete/singleCommand/whereSql.js +2 -2
- package/src/table/commands/getChangeSet.js +2 -2
- package/src/table/commands/insert/getSqlTemplate.js +16 -16
- package/src/table/commands/lastCommandMatches.js +2 -2
- package/src/table/commands/newDeleteCommand.js +5 -5
- package/src/table/commands/newGetLastInsertedCommand.js +4 -4
- package/src/table/commands/newGetLastInsertedCommandCore.js +5 -5
- package/src/table/commands/newInsertCommand.js +0 -1
- package/src/table/commands/newInsertCommandCore.js +3 -3
- package/src/table/commands/newRow.js +4 -4
- package/src/table/commands/newUpdateCommand.js +4 -4
- package/src/table/commands/newUpdateCommandCore.js +4 -4
- package/src/table/commands/pushCommand.js +2 -2
- package/src/table/commit.js +13 -11
- package/src/table/count.js +8 -8
- package/src/table/delete.js +4 -4
- package/src/table/deleteSessionContext.js +4 -13
- package/src/table/executeQueries/executeChanges.js +3 -3
- package/src/table/executeQueries/executeQueriesCore.js +2 -2
- package/src/table/executeQueries/executeQuery.js +2 -2
- package/src/table/executeQueries/resolveExecuteQuery.js +4 -4
- package/src/table/executeQueries.js +4 -4
- package/src/table/getFromDbById.js +1 -1
- package/src/table/getMany.js +7 -7
- package/src/table/getManyDto.js +3 -4
- package/src/table/getSessionContext.js +4 -4
- package/src/table/getSessionSingleton.js +3 -2
- package/src/table/groupBy/newQuery.js +4 -4
- package/src/table/groupBy.js +9 -9
- package/src/table/insert.js +10 -13
- package/src/table/joinRelation/getRelatives.js +6 -6
- package/src/table/newGetRelated.js +3 -3
- package/src/table/newManyRelation.js +9 -9
- package/src/table/newOneRelation.js +9 -9
- package/src/table/newPrimaryKeyFilter.js +6 -6
- package/src/table/newQuery.js +5 -5
- package/src/table/newRelatedTable.js +2 -2
- package/src/table/newRowCache.js +17 -17
- package/src/table/newThrow.js +2 -2
- package/src/table/oneRelation/getRelatives.js +5 -5
- package/src/table/popChanges.js +3 -3
- package/src/table/promise.js +2 -8
- package/src/table/query/extractLimit.js +2 -2
- package/src/table/query/extractOffset.js +2 -2
- package/src/table/query/extractOrderBy.js +2 -2
- package/src/table/query/newSingleQuery.js +7 -7
- package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +5 -5
- package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -2
- package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +4 -4
- package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +2 -2
- package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +2 -2
- package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +2 -2
- package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +5 -5
- package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +6 -5
- package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +2 -2
- package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +2 -2
- package/src/table/query/singleQuery/negotiateExclusive.js +2 -2
- package/src/table/query/singleQuery/newColumnSql.js +3 -3
- package/src/table/query/singleQuery/newDiscriminatorSql.js +2 -2
- package/src/table/query/singleQuery/newJoinSql.js +6 -6
- package/src/table/query/singleQuery/newWhereSql.js +3 -3
- package/src/table/quote.js +4 -4
- package/src/table/relatedTable/aggregate.js +2 -2
- package/src/table/relatedTable/all.js +5 -5
- package/src/table/relatedTable/any.js +3 -3
- package/src/table/relatedTable/childColumn.js +12 -12
- package/src/table/relatedTable/columnAggregate.js +3 -3
- package/src/table/relatedTable/columnAggregateGroup.js +11 -11
- package/src/table/relatedTable/joinSql.js +5 -5
- package/src/table/relatedTable/joinSqlArray.js +3 -3
- package/src/table/relatedTable/none.js +3 -3
- package/src/table/relatedTable/relatedColumn.js +13 -13
- package/src/table/relatedTable/selectSql.js +2 -2
- package/src/table/relatedTable/subFilter.js +4 -4
- package/src/table/relatedTable/where.js +3 -3
- package/src/table/relatedTable/whereSql.js +2 -2
- package/src/table/relation/manyCache/synchronizeAdded.js +2 -2
- package/src/table/relation/manyCache/synchronizeChanged.js +3 -3
- package/src/table/relation/manyCache/synchronizeRemoved.js +2 -2
- package/src/table/relation/newForeignKeyFilter.js +2 -2
- package/src/table/relation/newManyCache.js +16 -16
- package/src/table/relation/newOneCache.js +6 -6
- package/src/table/releaseDbClient.js +4 -4
- package/src/table/resultToPromise.js +1 -3
- package/src/table/resultToRows/dbRowToRow.js +8 -8
- package/src/table/resultToRows/dbRowsToRows.js +2 -2
- package/src/table/resultToRows/decodeDbRow.js +2 -2
- package/src/table/resultToRows/delete/removeFromCache.js +6 -6
- package/src/table/resultToRows/delete.js +6 -6
- package/src/table/resultToRows/newDecodeDbRow.js +19 -18
- package/src/table/resultToRows/toDto.js +3 -3
- package/src/table/resultToRows.js +3 -3
- package/src/table/rollback.js +21 -11
- package/src/table/rowArray/negotiateNextTick.js +1 -2
- package/src/table/setSessionSingleton.js +6 -3
- package/src/table/tryGetFirstFromDb.js +4 -4
- package/src/table/tryGetFromCacheById.js +3 -3
- package/src/table/tryGetFromDbById/extractStrategy.js +2 -2
- package/src/table/tryGetFromDbById.js +8 -6
- package/src/table/tryGetSessionContext.js +5 -10
- package/src/table/tryReleaseDbClient.js +2 -2
- package/src/table/updateField.js +4 -4
- package/src/table/where.js +2 -2
- package/src/table.js +58 -51
- package/src/tedious/deleteFromSql.js +1 -1
- package/src/tedious/formatDateOut.js +1 -1
- package/src/tedious/getManyDto/newQueryCore.js +5 -5
- package/src/tedious/getManyDto/query/newSingleQuery.js +5 -5
- package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +3 -3
- package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +3 -3
- package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +4 -4
- package/src/tedious/getManyDto/query/newSubQueries.js +8 -8
- package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +5 -6
- package/src/tedious/getManyDto.js +6 -6
- package/src/tedious/insert.js +3 -3
- package/src/tedious/insertSql.js +3 -3
- package/src/tedious/newDatabase.js +17 -30
- package/src/tedious/newPool.js +10 -10
- package/src/tedious/newTransaction.js +4 -5
- package/src/tedious/pool/newGenericPool.js +1 -1
- package/src/tedious/quote.js +1 -0
- package/src/mssql/pool/defaults.js +0 -45
- package/src/oracle/pool/defaults.js +0 -45
- package/src/pg/pool/defaults.js +0 -45
- package/src/sqlite/pool/defaults.js +0 -45
- package/src/tedious/pool/defaults.js +0 -45
package/src/table/delete.js
CHANGED
|
@@ -4,15 +4,15 @@ var extractDeleteStrategy = require('./extractDeleteStrategy');
|
|
|
4
4
|
var negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
|
|
5
5
|
var emptyPromise = require('./resultToPromise')();
|
|
6
6
|
|
|
7
|
-
function _delete(table, filter, strategy) {
|
|
8
|
-
filter = negotiateRawSqlFilter(filter, table);
|
|
7
|
+
function _delete(context, table, filter, strategy) {
|
|
8
|
+
filter = negotiateRawSqlFilter(context, filter, table);
|
|
9
9
|
strategy = extractDeleteStrategy(strategy);
|
|
10
10
|
var relations = [];
|
|
11
11
|
var cmds = [];
|
|
12
12
|
|
|
13
|
-
cmds = newDeleteCommand(cmds, table, filter, strategy, relations);
|
|
13
|
+
cmds = newDeleteCommand(context, cmds, table, filter, strategy, relations);
|
|
14
14
|
cmds.forEach(function(cmd) {
|
|
15
|
-
pushCommand(cmd);
|
|
15
|
+
pushCommand(context, cmd);
|
|
16
16
|
});
|
|
17
17
|
return emptyPromise;
|
|
18
18
|
}
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
let cls;
|
|
1
|
+
const process = require('node:process');
|
|
3
2
|
|
|
4
|
-
function deleteSessionContext() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
cls = require('node-cls');
|
|
8
|
-
let context = cls.get('rdb');
|
|
9
|
-
delete context.rdb;
|
|
10
|
-
if (context.exit)
|
|
11
|
-
cls.exit('rdb');
|
|
12
|
-
}
|
|
13
|
-
else
|
|
14
|
-
delete process.domain.rdb;
|
|
3
|
+
function deleteSessionContext(context) {
|
|
4
|
+
context = context || process.domain;
|
|
5
|
+
delete context.rdb;
|
|
15
6
|
}
|
|
16
7
|
|
|
17
8
|
module.exports = deleteSessionContext;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var executeQuery = require('./executeQuery');
|
|
2
2
|
var newPromise = require('../promise');
|
|
3
3
|
|
|
4
|
-
function executeChanges(queries) {
|
|
4
|
+
function executeChanges(context, queries) {
|
|
5
5
|
if (queries.length === 0)
|
|
6
6
|
return newPromise();
|
|
7
7
|
var i = -1;
|
|
@@ -11,9 +11,9 @@ function executeChanges(queries) {
|
|
|
11
11
|
function execute() {
|
|
12
12
|
i++;
|
|
13
13
|
if (i + 1 === queries.length)
|
|
14
|
-
return executeQuery(queries[i]).then(notifyListener);
|
|
14
|
+
return executeQuery(context, queries[i]).then(notifyListener);
|
|
15
15
|
else {
|
|
16
|
-
return executeQuery(queries[i]).then(notifyListener).then(execute);
|
|
16
|
+
return executeQuery(context, queries[i]).then(notifyListener).then(execute);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var executeQuery = require('./executeQuery');
|
|
2
2
|
|
|
3
|
-
function executeQueriesCore(queries) {
|
|
3
|
+
function executeQueriesCore(context, queries) {
|
|
4
4
|
var promises = [];
|
|
5
5
|
for (var i = 0; i < queries.length; i++) {
|
|
6
|
-
var q = executeQuery(queries[i]);
|
|
6
|
+
var q = executeQuery(context, queries[i]);
|
|
7
7
|
promises.push(q);
|
|
8
8
|
}
|
|
9
9
|
return promises;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
const getSessionSingleton = require('../getSessionSingleton');
|
|
2
|
+
const process = require('node:process');
|
|
2
3
|
|
|
3
|
-
function resolveExecuteQuery(query) {
|
|
4
|
+
function resolveExecuteQuery(context, query) {
|
|
4
5
|
return resolve;
|
|
5
6
|
|
|
6
7
|
function resolve(success, failed) {
|
|
@@ -11,8 +12,7 @@ function resolveExecuteQuery(query) {
|
|
|
11
12
|
success = process.domain.bind(success);
|
|
12
13
|
failed = process.domain.bind(failed);
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
var client = getSessionSingleton('dbClient');
|
|
15
|
+
var client = getSessionSingleton(context, 'dbClient');
|
|
16
16
|
query = negotiateNullParams(query);
|
|
17
17
|
client.executeQuery(query, onCompleted);
|
|
18
18
|
} catch (e) {
|
|
@@ -2,13 +2,13 @@ var executeChanges = require('./executeQueries/executeChanges');
|
|
|
2
2
|
var popChanges = require('./popChanges');
|
|
3
3
|
var executeQueriesCore = require('./executeQueries/executeQueriesCore');
|
|
4
4
|
|
|
5
|
-
function executeQueries(queries) {
|
|
6
|
-
var changes = popChanges();
|
|
5
|
+
function executeQueries(context, queries) {
|
|
6
|
+
var changes = popChanges(context);
|
|
7
7
|
|
|
8
|
-
return executeChanges(changes).then(onDoneChanges);
|
|
8
|
+
return executeChanges(context, changes).then(onDoneChanges);
|
|
9
9
|
|
|
10
10
|
function onDoneChanges() {
|
|
11
|
-
return executeQueriesCore(queries);
|
|
11
|
+
return executeQueriesCore(context, queries);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
package/src/table/getMany.js
CHANGED
|
@@ -5,18 +5,18 @@ let strategyToSpan = require('./strategyToSpan');
|
|
|
5
5
|
let emptyInnerJoin = require('./query/newParameterized')();
|
|
6
6
|
let negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
|
|
7
7
|
|
|
8
|
-
function getMany(table,filter,strategy) {
|
|
9
|
-
return getManyCore(table,filter,strategy);
|
|
8
|
+
function getMany(context,table,filter,strategy) {
|
|
9
|
+
return getManyCore(context, table,filter,strategy);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
async function getManyCore(table,filter,strategy,exclusive) {
|
|
12
|
+
async function getManyCore(context,table,filter,strategy,exclusive) {
|
|
13
13
|
let alias = table._dbName;
|
|
14
14
|
let noOrderBy;
|
|
15
|
-
filter = negotiateRawSqlFilter(filter, table);
|
|
15
|
+
filter = negotiateRawSqlFilter(context, filter, table);
|
|
16
16
|
let span = strategyToSpan(table,strategy);
|
|
17
|
-
let queries = newQuery([],table,filter,span,alias,emptyInnerJoin,noOrderBy,exclusive);
|
|
18
|
-
let result = await executeQueries(queries);
|
|
19
|
-
return resultToRows(span,result);
|
|
17
|
+
let queries = newQuery(context, [],table,filter,span,alias,emptyInnerJoin,noOrderBy,exclusive);
|
|
18
|
+
let result = await executeQueries(context, queries);
|
|
19
|
+
return resultToRows(context, span,result);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
getMany.exclusive = function(table,filter,strategy) {
|
package/src/table/getManyDto.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
const
|
|
1
|
+
const getSessionSingleton = require('../table/getSessionSingleton');
|
|
2
2
|
const getManyDtoCore = require('../getManyDto');
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const _getManyDto = tryGetSessionContext().getManyDto || getManyDtoCore;
|
|
4
|
+
function getManyDto(context, _table, _filter, _strategy) {
|
|
5
|
+
const _getManyDto = getSessionSingleton(context, 'getManyDto') || getManyDtoCore;
|
|
7
6
|
return _getManyDto.apply(null, arguments);
|
|
8
7
|
}
|
|
9
8
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
let tryGetSessionContext = require('./tryGetSessionContext');
|
|
2
2
|
|
|
3
|
-
function getSessionContext() {
|
|
4
|
-
|
|
5
|
-
if (!
|
|
3
|
+
function getSessionContext(context) {
|
|
4
|
+
const rdb = tryGetSessionContext(context);
|
|
5
|
+
if (!rdb)
|
|
6
6
|
throw new Error('Rdb transaction is no longer available. Is promise chain broken ?');
|
|
7
|
-
return
|
|
7
|
+
return rdb;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
module.exports = getSessionContext;
|
|
@@ -4,13 +4,13 @@ var extractLimit = require('../query/extractLimit');
|
|
|
4
4
|
var newParameterized = require('../query/newParameterized');
|
|
5
5
|
var extractOffset = require('../query/extractOffset');
|
|
6
6
|
|
|
7
|
-
function newQuery(table,filter,span,alias) {
|
|
7
|
+
function newQuery(context, table,filter,span,alias) {
|
|
8
8
|
filter = extractFilter(filter);
|
|
9
9
|
var orderBy = '';
|
|
10
|
-
var limit = extractLimit(span);
|
|
11
|
-
var offset = extractOffset(span);
|
|
10
|
+
var limit = extractLimit(context, span);
|
|
11
|
+
var offset = extractOffset(context, span);
|
|
12
12
|
|
|
13
|
-
var query = newSingleQuery(table,filter,span,alias,orderBy,limit,offset);
|
|
13
|
+
var query = newSingleQuery(context, table,filter,span,alias,orderBy,limit,offset);
|
|
14
14
|
const groupClause = groupBy(span);
|
|
15
15
|
return newParameterized(query.sql(), query.parameters).append(groupClause);
|
|
16
16
|
}
|
package/src/table/groupBy.js
CHANGED
|
@@ -3,11 +3,11 @@ const negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
|
|
|
3
3
|
const strategyToSpan = require('./strategyToSpan');
|
|
4
4
|
const executeQueries = require('./executeQueries');
|
|
5
5
|
|
|
6
|
-
async function groupBy(table, filter, strategy) {
|
|
7
|
-
filter = negotiateRawSqlFilter(filter, table);
|
|
6
|
+
async function groupBy(context, table, filter, strategy) {
|
|
7
|
+
filter = negotiateRawSqlFilter(context, filter, table);
|
|
8
8
|
if (strategy && strategy.where) {
|
|
9
9
|
let arg = typeof strategy.where === 'function' ? strategy.where(table) : strategy.where;
|
|
10
|
-
filter = filter.and(arg);
|
|
10
|
+
filter = filter.and(context, arg);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
let span = strategyToSpan(table, strategy);
|
|
@@ -15,9 +15,9 @@ async function groupBy(table, filter, strategy) {
|
|
|
15
15
|
|
|
16
16
|
let alias = table._dbName;
|
|
17
17
|
|
|
18
|
-
const query = newQuery(table, filter, span, alias);
|
|
19
|
-
const res = await executeQueries([query]);
|
|
20
|
-
return decode(span, await res[0]);
|
|
18
|
+
const query = newQuery(context, table, filter, span, alias);
|
|
19
|
+
const res = await executeQueries(context, [query]);
|
|
20
|
+
return decode(context, span, await res[0]);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
function newCreateRow(span) {
|
|
@@ -40,7 +40,7 @@ function createProto(span) {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
async function decode(span, rows, keys = rows.length > 0 ? Object.keys(rows[0]) : []) {
|
|
43
|
+
async function decode(context, span, rows, keys = rows.length > 0 ? Object.keys(rows[0]) : []) {
|
|
44
44
|
const rowsLength = rows.length;
|
|
45
45
|
const aggregateKeys = Object.keys(span.aggregates);
|
|
46
46
|
|
|
@@ -52,8 +52,8 @@ async function decode(span, rows, keys = rows.length > 0 ? Object.keys(rows[0])
|
|
|
52
52
|
|
|
53
53
|
for (let j = 0; j < aggregateKeys.length; j++) {
|
|
54
54
|
const key = aggregateKeys[j];
|
|
55
|
-
const parse = span.aggregates[key].column?.decode || Number.parseFloat;
|
|
56
|
-
outRow[key] = parse(row[keys[j]]);
|
|
55
|
+
const parse = span.aggregates[key].column?.decode || ((_context, arg) => Number.parseFloat(arg));
|
|
56
|
+
outRow[key] = parse(context, row[keys[j]]);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
outRows[i] = outRow;
|
package/src/table/insert.js
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
let getSessionContext = require('./getSessionContext');
|
|
2
2
|
let newRow = require('./commands/newRow');
|
|
3
|
-
let insertDefault = require('./insertDefault');
|
|
4
3
|
|
|
5
|
-
function insert({ table, options }, arg) {
|
|
6
|
-
// return insertDefault.apply(null, arguments);
|
|
4
|
+
function insert(context, { table, options }, arg) {
|
|
7
5
|
if (Array.isArray(arg)) {
|
|
8
6
|
let all = [];
|
|
9
7
|
for (let i = 0; i < arg.length; i++) {
|
|
10
|
-
all.push(insert(table, arg[i]));
|
|
8
|
+
all.push(insert(context, table, arg[i]));
|
|
11
9
|
}
|
|
12
10
|
return Promise.all(all);
|
|
13
11
|
}
|
|
14
|
-
let
|
|
15
|
-
let row = newRow.apply(null, args);
|
|
12
|
+
let row = newRow.apply(null, [...arguments]);
|
|
16
13
|
let hasPrimary = getHasPrimary(table, row);
|
|
17
14
|
if (hasPrimary) {
|
|
18
|
-
row = table._cache.tryAdd(row);
|
|
15
|
+
row = table._cache.tryAdd(context, row);
|
|
19
16
|
}
|
|
20
17
|
expand(table, row);
|
|
21
18
|
Object.defineProperty(row, 'then', {
|
|
@@ -24,8 +21,8 @@ function insert({ table, options }, arg) {
|
|
|
24
21
|
enumerable: false,
|
|
25
22
|
configurable: true
|
|
26
23
|
});
|
|
27
|
-
const
|
|
28
|
-
const insertP = (context
|
|
24
|
+
const rdb = getSessionContext(context);
|
|
25
|
+
const insertP = rdb.insert(context, table, row, options).then(onResult);
|
|
29
26
|
|
|
30
27
|
|
|
31
28
|
// }
|
|
@@ -51,10 +48,10 @@ function insert({ table, options }, arg) {
|
|
|
51
48
|
return row;
|
|
52
49
|
|
|
53
50
|
function onResult([result]) {
|
|
54
|
-
row.hydrate(result);
|
|
55
|
-
if (!hasPrimary)
|
|
56
|
-
|
|
57
|
-
table._cache.tryAdd(row);
|
|
51
|
+
row.hydrate(context, result);
|
|
52
|
+
// if (!hasPrimary)
|
|
53
|
+
// row = table._cache.tryAdd(context, row);
|
|
54
|
+
row = table._cache.tryAdd(context, row);
|
|
58
55
|
return row;
|
|
59
56
|
}
|
|
60
57
|
}
|
|
@@ -2,7 +2,7 @@ var newPrimaryKeyFilter = require('../newPrimaryKeyFilter');
|
|
|
2
2
|
var emptyFilter = require('../../emptyFilter');
|
|
3
3
|
var negotiateExpandInverse = require('../negotiateExpandInverse');
|
|
4
4
|
|
|
5
|
-
function getRelatives(parent, relation) {
|
|
5
|
+
function getRelatives(context, parent, relation) {
|
|
6
6
|
var queryContext = parent.queryContext;
|
|
7
7
|
let strategy = queryContext && queryContext.strategy[relation.leftAlias];
|
|
8
8
|
var filter = emptyFilter;
|
|
@@ -24,15 +24,15 @@ function getRelatives(parent, relation) {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
if (ids.length > 0)
|
|
27
|
-
filter = relation.childTable._primaryColumns[0].in(ids);
|
|
27
|
+
filter = relation.childTable._primaryColumns[0].in(context, ids);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
function createCompositeFilter() {
|
|
31
31
|
var keyFilter;
|
|
32
32
|
for (var i = 0; i < queryContext.rows.length; i++) {
|
|
33
|
-
keyFilter = rowToPrimaryKeyFilter(queryContext.rows[i], relation);
|
|
33
|
+
keyFilter = rowToPrimaryKeyFilter(context, queryContext.rows[i], relation);
|
|
34
34
|
if (keyFilter)
|
|
35
|
-
filter = filter.or(keyFilter);
|
|
35
|
+
filter = filter.or(context, keyFilter);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -46,14 +46,14 @@ function getRelatives(parent, relation) {
|
|
|
46
46
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
function rowToPrimaryKeyFilter(row, relation) {
|
|
49
|
+
function rowToPrimaryKeyFilter(context, row, relation) {
|
|
50
50
|
var key = relation.columns.map( function(column) {
|
|
51
51
|
return row[column.alias];
|
|
52
52
|
});
|
|
53
53
|
if (key.some(isNullOrUndefined)) {
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
|
-
var args = [relation.childTable].concat(key);
|
|
56
|
+
var args = [context, relation.childTable].concat(key);
|
|
57
57
|
return newPrimaryKeyFilter.apply(null, args);
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function newGetRelated(parent, relation) {
|
|
1
|
+
function newGetRelated(context, parent, relation) {
|
|
2
2
|
function getRelated() {
|
|
3
3
|
if (getRelated.expanded)
|
|
4
4
|
return relation.getFromCache(parent);
|
|
5
5
|
if (parent.queryContext)
|
|
6
|
-
return relation.getRelatives(parent).then(onRelatives);
|
|
7
|
-
return relation.getFromDb(parent).then(onFromDb);
|
|
6
|
+
return relation.getRelatives(context, parent).then(onRelatives);
|
|
7
|
+
return relation.getFromDb(context, parent).then(onFromDb);
|
|
8
8
|
|
|
9
9
|
function onFromDb(rows) {
|
|
10
10
|
getRelated.expanded = true;
|
|
@@ -23,17 +23,17 @@ function newManyRelation(joinRelation) {
|
|
|
23
23
|
return fuzzyPromise(result);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
c.getFromDb = function(parent) {
|
|
27
|
-
var filter = newForeignKeyFilter(joinRelation, parent);
|
|
28
|
-
return c.childTable.getMany(filter, null);
|
|
26
|
+
c.getFromDb = function(context, parent) {
|
|
27
|
+
var filter = newForeignKeyFilter(context, joinRelation, parent);
|
|
28
|
+
return c.childTable.getMany(context, filter, null);
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
c.getRelatives = function(parent) {
|
|
32
|
-
return getRelatives(parent, c);
|
|
31
|
+
c.getRelatives = function(context, parent) {
|
|
32
|
+
return getRelatives(context, parent, c);
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
c.toGetRelated = function(parent) {
|
|
36
|
-
return newGetRelated(parent, c);
|
|
35
|
+
c.toGetRelated = function(context, parent) {
|
|
36
|
+
return newGetRelated(context, parent, c);
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
c.expand = function(parent) {
|
|
@@ -51,8 +51,8 @@ function newManyRelation(joinRelation) {
|
|
|
51
51
|
return newLeg(c);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
c.getInnerCache = function() {
|
|
55
|
-
return manyCache.getInnerCache();
|
|
54
|
+
c.getInnerCache = function(context) {
|
|
55
|
+
return manyCache.getInnerCache(context);
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
return c;
|
|
@@ -23,17 +23,17 @@ function newOneRelation(joinRelation) {
|
|
|
23
23
|
return fuzzyPromise(row);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
c.getFromDb = function(parent) {
|
|
27
|
-
var filter = newForeignKeyFilter(joinRelation, parent);
|
|
28
|
-
return c.childTable.tryGetFirst(filter, null);
|
|
26
|
+
c.getFromDb = function(context, parent) {
|
|
27
|
+
var filter = newForeignKeyFilter(context, joinRelation, parent);
|
|
28
|
+
return c.childTable.tryGetFirst(context, filter, null);
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
c.getRelatives = function(parent) {
|
|
32
|
-
return getRelatives(parent, c);
|
|
31
|
+
c.getRelatives = function(context, parent) {
|
|
32
|
+
return getRelatives(context, parent, c);
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
c.toGetRelated = function(parent) {
|
|
36
|
-
return newGetRelated(parent, c);
|
|
35
|
+
c.toGetRelated = function(context, parent) {
|
|
36
|
+
return newGetRelated(context, parent, c);
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
c.expand = function(parent) {
|
|
@@ -51,8 +51,8 @@ function newOneRelation(joinRelation) {
|
|
|
51
51
|
return newLeg(c);
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
c.getInnerCache = function() {
|
|
55
|
-
return oneCache.getInnerCache();
|
|
54
|
+
c.getInnerCache = function(context) {
|
|
55
|
+
return oneCache.getInnerCache(context);
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
return c;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
function primaryKeyFilter(table) {
|
|
1
|
+
function primaryKeyFilter(context, table) {
|
|
2
2
|
var primaryColumns = table._primaryColumns;
|
|
3
|
-
var key = arguments[
|
|
4
|
-
var filter = primaryColumns[0].equal(key);
|
|
5
|
-
for (var i =
|
|
3
|
+
var key = arguments[2];
|
|
4
|
+
var filter = primaryColumns[0].equal(context, key);
|
|
5
|
+
for (var i = 2; i < primaryColumns.length; i++) {
|
|
6
6
|
key = arguments[i+1];
|
|
7
|
-
var colFilter = primaryColumns[i].equal(key);
|
|
8
|
-
filter = filter.and(colFilter);
|
|
7
|
+
var colFilter = primaryColumns[i].equal(context, key);
|
|
8
|
+
filter = filter.and(context, colFilter);
|
|
9
9
|
}
|
|
10
10
|
return filter;
|
|
11
11
|
}
|
package/src/table/newQuery.js
CHANGED
|
@@ -4,12 +4,12 @@ var extractOrderBy = require('./query/extractOrderBy');
|
|
|
4
4
|
var extractLimit = require('./query/extractLimit');
|
|
5
5
|
var extractOffset = require('./query/extractOffset');
|
|
6
6
|
|
|
7
|
-
function newQuery(queries,table,filter,span,alias,innerJoin,orderBy,exclusive) {
|
|
7
|
+
function newQuery(context, queries,table,filter,span,alias,innerJoin,orderBy,exclusive) {
|
|
8
8
|
filter = extractFilter(filter);
|
|
9
|
-
orderBy = extractOrderBy(table,alias,span.orderBy,orderBy);
|
|
10
|
-
var limit = extractLimit(span);
|
|
11
|
-
var offset = extractOffset(span);
|
|
12
|
-
var singleQuery = newSingleQuery(table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive);
|
|
9
|
+
orderBy = extractOrderBy(context, table,alias,span.orderBy,orderBy);
|
|
10
|
+
var limit = extractLimit(context, span);
|
|
11
|
+
var offset = extractOffset(context, span);
|
|
12
|
+
var singleQuery = newSingleQuery(context, table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive);
|
|
13
13
|
queries.push(singleQuery);
|
|
14
14
|
|
|
15
15
|
return queries;
|
|
@@ -65,10 +65,10 @@ function newRelatedTable(relations, isShallow, depth = 0) {
|
|
|
65
65
|
|
|
66
66
|
|
|
67
67
|
// @ts-ignore
|
|
68
|
-
c.exists = function() {
|
|
68
|
+
c.exists = function(context) {
|
|
69
69
|
if (isShallow)
|
|
70
70
|
return '';
|
|
71
|
-
return subFilter(relations, false, depth);
|
|
71
|
+
return subFilter(context, relations, false, depth);
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
let cProxy = new Proxy(c, {
|
package/src/table/newRowCache.js
CHANGED
|
@@ -6,43 +6,43 @@ function newRowCache(table) {
|
|
|
6
6
|
let id = Symbol();
|
|
7
7
|
let c = {};
|
|
8
8
|
|
|
9
|
-
c.tryGet = function(row) {
|
|
10
|
-
return getCache(table, id).tryGet(row);
|
|
9
|
+
c.tryGet = function(context, row) {
|
|
10
|
+
return getCache(context, table, id).tryGet(row);
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
c.tryAdd = function(row) {
|
|
14
|
-
return getCache(table, id).tryAdd(row);
|
|
13
|
+
c.tryAdd = function(context, row) {
|
|
14
|
+
return getCache(context, table, id).tryAdd(row);
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
c.tryRemove = function(row) {
|
|
18
|
-
return getCache(table, id).tryRemove(row);
|
|
17
|
+
c.tryRemove = function(context, row) {
|
|
18
|
+
return getCache(context, table, id).tryRemove(row);
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
-
c.subscribeAdded = function() {
|
|
22
|
-
return getCache(table, id).subscribeAdded.apply(null,
|
|
21
|
+
c.subscribeAdded = function(context, ...rest) {
|
|
22
|
+
return getCache(context, table, id).subscribeAdded.apply(null, rest);
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
c.subscribeRemoved = function() {
|
|
26
|
-
return getCache(table, id).subscribeRemoved.apply(null,
|
|
25
|
+
c.subscribeRemoved = function(context, ...rest) {
|
|
26
|
+
return getCache(context, table, id).subscribeRemoved.apply(null, rest);
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
c.getAll = function() {
|
|
30
|
-
return getCache(table, id).getAll.apply(null, arguments);
|
|
29
|
+
c.getAll = function(context) {
|
|
30
|
+
return getCache(context, table, id).getAll.apply(null, arguments);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
c.getInnerCache = function() {
|
|
34
|
-
return getCache(table, id);
|
|
33
|
+
c.getInnerCache = function(context) {
|
|
34
|
+
return getCache(context, table, id);
|
|
35
35
|
};
|
|
36
36
|
return c;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
function getCache(table, id) {
|
|
41
|
-
let cache = getSessionSingleton(id);
|
|
40
|
+
function getCache(context, table, id) {
|
|
41
|
+
let cache = getSessionSingleton(context, id);
|
|
42
42
|
if (cache)
|
|
43
43
|
return cache;
|
|
44
44
|
cache = _newRowCache(table);
|
|
45
|
-
setSessionSingleton(id, cache);
|
|
45
|
+
setSessionSingleton(context, id, cache);
|
|
46
46
|
return cache;
|
|
47
47
|
}
|
|
48
48
|
|
package/src/table/newThrow.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var tryReleaseDbClient = require('./tryReleaseDbClient');
|
|
2
2
|
|
|
3
|
-
function newThrow(e, previousPromise) {
|
|
3
|
+
function newThrow(context, e, previousPromise) {
|
|
4
4
|
return previousPromise.then(throwError, throwError);
|
|
5
5
|
function throwError() {
|
|
6
|
-
tryReleaseDbClient();
|
|
6
|
+
tryReleaseDbClient(context);
|
|
7
7
|
throw e;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
@@ -2,7 +2,7 @@ let emptyFilter = require('../../emptyFilter');
|
|
|
2
2
|
let newForeignKeyFilter = require('../relation/newForeignKeyFilter');
|
|
3
3
|
let negotiateExpandInverse = require('../negotiateExpandInverse');
|
|
4
4
|
|
|
5
|
-
function getRelatives(parent, relation) {
|
|
5
|
+
function getRelatives(context, parent, relation) {
|
|
6
6
|
let queryContext = parent.queryContext;
|
|
7
7
|
let strategy = queryContext && queryContext.strategy[relation.joinRelation.rightAlias];
|
|
8
8
|
|
|
@@ -22,17 +22,17 @@ function getRelatives(parent, relation) {
|
|
|
22
22
|
return row[parentAlias];
|
|
23
23
|
});
|
|
24
24
|
let column = relation.joinRelation.columns[0];
|
|
25
|
-
return column.in(ids);
|
|
25
|
+
return column.in(context, ids);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function createCompositeFilter() {
|
|
29
29
|
let filters = queryContext.rows.map(function(row) {
|
|
30
|
-
return newForeignKeyFilter(relation.joinRelation, row);
|
|
30
|
+
return newForeignKeyFilter(context, relation.joinRelation, row);
|
|
31
31
|
});
|
|
32
|
-
return emptyFilter.or.apply(emptyFilter, filters);
|
|
32
|
+
return emptyFilter.or.apply(emptyFilter, [context, ...filters]);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
return relation.childTable.getMany(filter, strategy).then(onRows);
|
|
35
|
+
return relation.childTable.getMany(context, filter, strategy).then(onRows);
|
|
36
36
|
|
|
37
37
|
function onRows(rows) {
|
|
38
38
|
queryContext.expand(relation);
|
package/src/table/popChanges.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
var getChangeSet = require('./commands/getChangeSet');
|
|
2
2
|
var compressChanges = require('./commands/compressChanges');
|
|
3
3
|
|
|
4
|
-
function popChanges() {
|
|
5
|
-
var changeSet = getChangeSet();
|
|
4
|
+
function popChanges(context) {
|
|
5
|
+
var changeSet = getChangeSet(context);
|
|
6
6
|
var length = changeSet.length;
|
|
7
7
|
if (length > 0) {
|
|
8
8
|
var lastCmd = changeSet[length-1];
|
|
9
9
|
if (lastCmd.endEdit)
|
|
10
10
|
lastCmd.endEdit();
|
|
11
|
-
var compressed = compressChanges(changeSet);
|
|
11
|
+
var compressed = compressChanges(context, changeSet);
|
|
12
12
|
changeSet.length = 0;
|
|
13
13
|
return compressed;
|
|
14
14
|
}
|
package/src/table/promise.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
var promise = require('promise/domains');
|
|
2
|
-
var deferred = require('deferred');
|
|
3
|
-
let promisify = require('util').promisify;
|
|
4
|
-
|
|
5
|
-
|
|
6
1
|
function newPromise(func) {
|
|
7
2
|
if (!func)
|
|
8
|
-
return
|
|
9
|
-
return new
|
|
3
|
+
return Promise.resolve.apply(Promise, arguments);
|
|
4
|
+
return new Promise(func);
|
|
10
5
|
}
|
|
11
6
|
|
|
12
7
|
newPromise.all = Promise.all;
|
|
13
|
-
newPromise.denodeify = promisify || promise.denodeify;
|
|
14
8
|
module.exports = newPromise;
|