orange-orm 4.5.0-beta.0 → 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 +6 -1
- package/docs/changelog.md +4 -0
- package/package.json +8 -5
- package/src/client/index.js +3 -2
- package/src/client/index.mjs +253 -137
- package/src/createDomain.js +11 -16
- package/src/d1/newDatabase.js +23 -37
- package/src/d1/newPool.js +6 -6
- package/src/d1/pool/newGenericPool.js +2 -1
- 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.js +11 -16
- package/src/mssql/newDatabase.js +19 -31
- package/src/mssql/newPool.js +2 -2
- package/src/mssql/newTransaction.js +4 -3
- 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 +2 -2
- 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 +2 -1
- 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 +2 -1
- package/src/pg/pool/newPgPool.js +23 -4
- package/src/pg/pool/parseSearchPathParam.js +10 -0
- 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 +2 -1
- 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 +2 -1
- 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/tryParseISO.js +6 -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 +3 -4
- package/src/tedious/pool/newGenericPool.js +1 -1
- package/src/tedious/quote.js +1 -0
- package/src/d1/pool/defaults.js +0 -45
- 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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var getSessionContext = require('../getSessionContext');
|
|
2
2
|
|
|
3
|
-
function extractOffset(span) {
|
|
4
|
-
let {limitAndOffset} = getSessionContext();
|
|
3
|
+
function extractOffset(context, span) {
|
|
4
|
+
let {limitAndOffset} = getSessionContext(context);
|
|
5
5
|
if (limitAndOffset)
|
|
6
6
|
return limitAndOffset(span);
|
|
7
7
|
else
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const getSessionSingleton = require('../getSessionSingleton');
|
|
2
2
|
|
|
3
|
-
function extractOrderBy(table, alias, orderBy, originalOrderBy) {
|
|
4
|
-
const quote = getSessionSingleton('quote');
|
|
3
|
+
function extractOrderBy(context, table, alias, orderBy, originalOrderBy) {
|
|
4
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
5
5
|
alias = quote(alias);
|
|
6
6
|
var dbNames = [];
|
|
7
7
|
var i;
|
|
@@ -6,15 +6,15 @@ var negotiateExclusive = require('./singleQuery/negotiateExclusive');
|
|
|
6
6
|
var newParameterized = require('../../table/query/newParameterized');
|
|
7
7
|
var quote = require('../quote');
|
|
8
8
|
|
|
9
|
-
function _new(table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive) {
|
|
9
|
+
function _new(context, table, filter, span, alias, innerJoin, orderBy, limit, offset, exclusive) {
|
|
10
10
|
|
|
11
|
-
var name = quote(table._dbName);
|
|
12
|
-
var columnSql = newColumnSql(table,span,alias);
|
|
13
|
-
var joinSql = newJoinSql(span,alias);
|
|
14
|
-
var whereSql = newWhereSql(table,filter,alias);
|
|
11
|
+
var name = quote(context, table._dbName);
|
|
12
|
+
var columnSql = newColumnSql(context, table, span, alias);
|
|
13
|
+
var joinSql = newJoinSql(context, span, alias);
|
|
14
|
+
var whereSql = newWhereSql(context, table, filter, alias);
|
|
15
15
|
var safeLimit = negotiateLimit(limit);
|
|
16
|
-
var exclusiveClause = negotiateExclusive(table,alias,exclusive);
|
|
17
|
-
return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + quote(alias))
|
|
16
|
+
var exclusiveClause = negotiateExclusive(table, alias, exclusive);
|
|
17
|
+
return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + quote(context, alias))
|
|
18
18
|
.append(innerJoin)
|
|
19
19
|
.append(joinSql)
|
|
20
20
|
.append(whereSql)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
var newShallowColumnSql = require('./newShallowColumnSql');
|
|
2
2
|
var newJoinedColumnSql = _initJoinedColumnSql;
|
|
3
3
|
|
|
4
|
-
function sql(leg,alias,ignoreNull) {
|
|
4
|
+
function sql(context,leg,alias,ignoreNull) {
|
|
5
5
|
var span = leg.span;
|
|
6
|
-
var shallowColumnSql = newShallowColumnSql(span.table,alias, span, ignoreNull);
|
|
7
|
-
var joinedColumnSql = newJoinedColumnSql(span,alias,ignoreNull);
|
|
6
|
+
var shallowColumnSql = newShallowColumnSql(context, span.table,alias, span, ignoreNull);
|
|
7
|
+
var joinedColumnSql = newJoinedColumnSql(context, span,alias,ignoreNull);
|
|
8
8
|
return ',' + shallowColumnSql + joinedColumnSql;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
function _initJoinedColumnSql(span,alias,ignoreNull) {
|
|
11
|
+
function _initJoinedColumnSql(context,span,alias,ignoreNull) {
|
|
12
12
|
newJoinedColumnSql = require('./newJoinedColumnSql');
|
|
13
|
-
return newJoinedColumnSql(span,alias,ignoreNull);
|
|
13
|
+
return newJoinedColumnSql(context,span,alias,ignoreNull);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
module.exports = sql;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
var joinLegToColumnSql = require('./joinLegToColumnSql');
|
|
2
2
|
|
|
3
|
-
module.exports = function(span, alias, ignoreNull) {
|
|
3
|
+
module.exports = function(context, span, alias, ignoreNull) {
|
|
4
4
|
var c = {};
|
|
5
5
|
var sql = '';
|
|
6
6
|
|
|
7
7
|
c.visitJoin = function(leg) {
|
|
8
|
-
var joinSql = joinLegToColumnSql(leg, alias + leg.name, ignoreNull);
|
|
8
|
+
var joinSql = joinLegToColumnSql(context, leg, alias + leg.name, ignoreNull);
|
|
9
9
|
sql = sql + joinSql;
|
|
10
10
|
};
|
|
11
11
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const getSessionSingleton = require('../../../getSessionSingleton');
|
|
2
2
|
|
|
3
|
-
function _new(table, alias, span, ignoreNulls) {
|
|
4
|
-
const quote = getSessionSingleton('quote');
|
|
3
|
+
function _new(context, table, alias, span, ignoreNulls) {
|
|
4
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
5
5
|
const quotedAlias = quote(alias);
|
|
6
6
|
let columnsMap = span.columns;
|
|
7
7
|
var columns = table._columns;
|
|
@@ -28,11 +28,11 @@ function _new(table, alias, span, ignoreNulls) {
|
|
|
28
28
|
return sql;
|
|
29
29
|
|
|
30
30
|
function formatColumn(column) {
|
|
31
|
-
const formatted = column.formatOut ? column.formatOut(quotedAlias) : quotedAlias + '.' + quote(column._dbName);
|
|
31
|
+
const formatted = column.formatOut ? column.formatOut(context, quotedAlias) : quotedAlias + '.' + quote(column._dbName);
|
|
32
32
|
if (column.dbNull === null)
|
|
33
33
|
return formatted;
|
|
34
34
|
else {
|
|
35
|
-
const encoded = column.encode.unsafe(column.dbNull);
|
|
35
|
+
const encoded = column.encode.unsafe(context, column.dbNull);
|
|
36
36
|
return `CASE WHEN ${formatted}=${encoded} THEN null ELSE ${formatted} END`;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var joinLegToShallowJoinSql = require('./joinLegToShallowJoinSql');
|
|
2
2
|
var newJoinSql = _newJoinSql;
|
|
3
3
|
|
|
4
|
-
function toJoinSql(leg,alias,childAlias) {
|
|
5
|
-
return joinLegToShallowJoinSql(leg,alias,childAlias).append(newJoinSql(leg.span,childAlias));
|
|
4
|
+
function toJoinSql(context,leg,alias,childAlias) {
|
|
5
|
+
return joinLegToShallowJoinSql(context,leg,alias,childAlias).append(newJoinSql(context,leg.span,childAlias));
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
function _newJoinSql() {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
var newShallowJoinSql = require('./newShallowJoinSql');
|
|
2
2
|
|
|
3
|
-
function toJoinSql(leg,alias,childAlias) {
|
|
3
|
+
function toJoinSql(context,leg,alias,childAlias) {
|
|
4
4
|
var columns = leg.columns;
|
|
5
5
|
var childTable = leg.span.table;
|
|
6
|
-
return newShallowJoinSql(childTable,columns,childTable._primaryColumns,alias,childAlias,leg.span.where).prepend(' LEFT');
|
|
6
|
+
return newShallowJoinSql(context,childTable,columns,childTable._primaryColumns,alias,childAlias,leg.span.where).prepend(' LEFT');
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
module.exports = toJoinSql;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var newDiscriminatorSqlCore = require('../newDiscriminatorSql');
|
|
2
2
|
|
|
3
|
-
function newDiscriminatorSql(table, alias) {
|
|
4
|
-
var result = newDiscriminatorSqlCore(table,alias);
|
|
3
|
+
function newDiscriminatorSql(context, table, alias) {
|
|
4
|
+
var result = newDiscriminatorSqlCore(context,table,alias);
|
|
5
5
|
if (result)
|
|
6
6
|
return ' AND' + result;
|
|
7
7
|
return result;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
const newJoinCore = require('./newShallowJoinSqlCore');
|
|
2
2
|
const getSessionSingleton = require('../../../getSessionSingleton');
|
|
3
3
|
|
|
4
|
-
function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias, filter) {
|
|
5
|
-
const quote = getSessionSingleton('quote');
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
function _new(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, filter) {
|
|
5
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
6
|
+
const sql = ' JOIN ' + quote(rightTable._dbName) + ' ' + quote(rightAlias) + ' ON (';
|
|
7
|
+
const joinCore = newJoinCore(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, filter);
|
|
8
8
|
return joinCore.prepend(sql).append(')');
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const newDiscriminatorSql = require('./newDiscriminatorSql');
|
|
2
|
+
const newParameterized = require('../../newParameterized');
|
|
3
|
+
const getSessionSingleton = require('../../../getSessionSingleton');
|
|
4
4
|
|
|
5
|
-
function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter) {
|
|
5
|
+
function _new(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, filter) {
|
|
6
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
6
7
|
leftAlias = quote(leftAlias);
|
|
7
8
|
rightAlias = quote(rightAlias);
|
|
8
9
|
var sql = '';
|
|
@@ -18,7 +19,7 @@ function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter) {
|
|
|
18
19
|
sql += delimiter + leftAlias + '.' + quote(leftColumn._dbName) + '=' + rightAlias + '.' + quote(rightColumn._dbName);
|
|
19
20
|
}
|
|
20
21
|
|
|
21
|
-
sql += newDiscriminatorSql(rightTable,rightAlias);
|
|
22
|
+
sql += newDiscriminatorSql(context, rightTable, rightAlias);
|
|
22
23
|
var result = newParameterized(sql);
|
|
23
24
|
if (filter)
|
|
24
25
|
result = result.append(delimiter).append(filter);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var oneLegToShallowJoinSql = require('./oneLegToShallowJoinSql');
|
|
2
2
|
var newJoinSql = _newJoinSql;
|
|
3
3
|
|
|
4
|
-
function toJoinSql(leg,alias,childAlias) {
|
|
5
|
-
return oneLegToShallowJoinSql(leg,alias,childAlias).append(newJoinSql(leg.span,childAlias));
|
|
4
|
+
function toJoinSql(context,leg,alias,childAlias) {
|
|
5
|
+
return oneLegToShallowJoinSql(context,leg,alias,childAlias).append(newJoinSql(context,leg.span,childAlias));
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
function _newJoinSql() {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var newShallowJoinSql = require('./newShallowJoinSql');
|
|
2
2
|
|
|
3
|
-
function toJoinSql(leg,alias,childAlias) {
|
|
3
|
+
function toJoinSql(context,leg,alias,childAlias) {
|
|
4
4
|
var parentTable = leg.table;
|
|
5
5
|
var columns = leg.columns;
|
|
6
6
|
var childTable = leg.span.table;
|
|
7
|
-
return newShallowJoinSql(childTable,parentTable._primaryColumns,columns,alias,childAlias, leg.span.where).prepend(' LEFT');
|
|
7
|
+
return newShallowJoinSql(context,childTable,parentTable._primaryColumns,columns,alias,childAlias, leg.span.where).prepend(' LEFT');
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
module.exports = toJoinSql;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var getSessionSingleton = require('../../getSessionSingleton');
|
|
2
2
|
|
|
3
|
-
function negotiateExclusive(table, alias, _exclusive) {
|
|
3
|
+
function negotiateExclusive(context, table, alias, _exclusive) {
|
|
4
4
|
if (table._exclusive || _exclusive) {
|
|
5
|
-
var encode = getSessionSingleton('selectForUpdateSql');
|
|
5
|
+
var encode = getSessionSingleton(context, 'selectForUpdateSql');
|
|
6
6
|
return encode(alias);
|
|
7
7
|
}
|
|
8
8
|
return '';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var newShallowColumnSql = require('./columnSql/newShallowColumnSql');
|
|
2
2
|
var newJoinedColumnSql = require('./columnSql/newJoinedColumnSql');
|
|
3
3
|
|
|
4
|
-
module.exports = function(table,span,alias,ignoreNull) {
|
|
5
|
-
var shallowColumnSql = newShallowColumnSql(table,alias, span, ignoreNull);
|
|
6
|
-
var joinedColumnSql = newJoinedColumnSql(span,alias, ignoreNull);
|
|
4
|
+
module.exports = function(context,table,span,alias,ignoreNull) {
|
|
5
|
+
var shallowColumnSql = newShallowColumnSql(context,table,alias, span, ignoreNull);
|
|
6
|
+
var joinedColumnSql = newJoinedColumnSql(context, span,alias, ignoreNull);
|
|
7
7
|
return shallowColumnSql + joinedColumnSql;
|
|
8
8
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const getSessionSingleton = require('../../getSessionSingleton');
|
|
2
2
|
|
|
3
|
-
function newDiscriminatorSql(table, alias) {
|
|
4
|
-
const quote = getSessionSingleton('quote');
|
|
3
|
+
function newDiscriminatorSql(context, table, alias) {
|
|
4
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
5
5
|
alias = quote(alias);
|
|
6
6
|
var result = '';
|
|
7
7
|
var formulaDiscriminators = table._formulaDiscriminators;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
const joinLegToJoinSql = require('./joinSql/joinLegToJoinSql');
|
|
2
|
+
const oneLegToJoinSql = require('./joinSql/oneLegToJoinSql');
|
|
3
|
+
const newParameterized = require('../newParameterized');
|
|
4
4
|
|
|
5
|
-
function _new(span,alias = '') {
|
|
5
|
+
function _new(context,span,alias = '') {
|
|
6
6
|
var sql = newParameterized('');
|
|
7
7
|
var childAlias;
|
|
8
8
|
|
|
9
9
|
var c = {};
|
|
10
10
|
c.visitJoin = function(leg) {
|
|
11
|
-
sql = joinLegToJoinSql(leg,alias,childAlias).prepend(sql);
|
|
11
|
+
sql = joinLegToJoinSql(context,leg,alias,childAlias).prepend(sql);
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
c.visitOne = function(leg) {
|
|
15
|
-
sql = oneLegToJoinSql(leg,alias,childAlias).prepend(sql);
|
|
15
|
+
sql = oneLegToJoinSql(context,leg,alias,childAlias).prepend(sql);
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
c.visitMany = function() {};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
var newDiscriminatorSql = require('./newDiscriminatorSql');
|
|
2
2
|
var newParameterized = require('../../../table/query/newParameterized');
|
|
3
3
|
|
|
4
|
-
function newWhereSql(table,filter,alias) {
|
|
4
|
+
function newWhereSql(context, table, filter, alias) {
|
|
5
5
|
var separator = ' where';
|
|
6
6
|
var result = newParameterized('');
|
|
7
7
|
var sql = filter.sql();
|
|
8
|
-
var discriminator = newDiscriminatorSql(table, alias);
|
|
8
|
+
var discriminator = newDiscriminatorSql(context, table, alias);
|
|
9
9
|
if (sql) {
|
|
10
10
|
result = filter.prepend(separator + ' ');
|
|
11
11
|
separator = ' AND';
|
|
12
12
|
}
|
|
13
|
-
if(discriminator)
|
|
13
|
+
if (discriminator)
|
|
14
14
|
result = result.append(separator + discriminator);
|
|
15
15
|
|
|
16
16
|
return result;
|
package/src/table/quote.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
let tryGetSessionContext = require('./tryGetSessionContext');
|
|
2
2
|
|
|
3
|
-
function quote(name) {
|
|
4
|
-
let
|
|
5
|
-
if (!
|
|
3
|
+
function quote(context, name) {
|
|
4
|
+
let rdb = tryGetSessionContext(context);
|
|
5
|
+
if (!rdb)
|
|
6
6
|
throw new Error('Rdb transaction is no longer available. Is promise chain broken ?');
|
|
7
|
-
let fn =
|
|
7
|
+
let fn = rdb.quote || (() => `"${name}"`);
|
|
8
8
|
return fn(name);
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -3,8 +3,8 @@ let tryGetSessionContext = require('../tryGetSessionContext');
|
|
|
3
3
|
|
|
4
4
|
function newAggregate(_relations) {
|
|
5
5
|
|
|
6
|
-
function aggregate(fn) {
|
|
7
|
-
const includeMany = tryGetSessionContext()?.engine === 'mssql';
|
|
6
|
+
function aggregate(context, fn) {
|
|
7
|
+
const includeMany = tryGetSessionContext(context)?.engine === 'mssql';
|
|
8
8
|
let { relations, alias } = extract(includeMany, _relations);
|
|
9
9
|
const table = relations[relations.length - 1].childTable;
|
|
10
10
|
if (!relations[0].isMany || includeMany)
|
|
@@ -5,13 +5,13 @@ let isShallow = true;
|
|
|
5
5
|
|
|
6
6
|
function newAll(relations, depth) {
|
|
7
7
|
|
|
8
|
-
function all(fn) {
|
|
8
|
+
function all(context, fn) {
|
|
9
9
|
let relatedTable = newRelatedTable(relations, isShallow, depth + 1);
|
|
10
10
|
let arg = typeof fn === 'function' ? fn(relatedTable) : fn;
|
|
11
|
-
let anyFilter = negotiateRawSqlFilter(arg);
|
|
12
|
-
let anySubFilter = subFilter(relations, anyFilter, depth);
|
|
13
|
-
let notFilter = subFilter(relations, anyFilter.not(), depth).not();
|
|
14
|
-
return anySubFilter.and(notFilter);
|
|
11
|
+
let anyFilter = negotiateRawSqlFilter(context, arg);
|
|
12
|
+
let anySubFilter = subFilter(context, relations, anyFilter, depth);
|
|
13
|
+
let notFilter = subFilter(context, relations, anyFilter.not(), depth).not();
|
|
14
|
+
return anySubFilter.and(context, notFilter);
|
|
15
15
|
}
|
|
16
16
|
return all;
|
|
17
17
|
}
|
|
@@ -6,11 +6,11 @@ let isShallow = true;
|
|
|
6
6
|
|
|
7
7
|
function newAny(relations, depth) {
|
|
8
8
|
|
|
9
|
-
function any(fn) {
|
|
9
|
+
function any(context, fn) {
|
|
10
10
|
let relatedTable = newRelatedTable(relations, isShallow, depth + 1);
|
|
11
11
|
let arg = typeof fn === 'function' ? fn(relatedTable) : fn;
|
|
12
|
-
let filter = negotiateRawSqlFilter(arg);
|
|
13
|
-
let sub = subFilter(relations, filter, depth);
|
|
12
|
+
let filter = negotiateRawSqlFilter(context, arg);
|
|
13
|
+
let sub = subFilter(context, relations, filter, depth);
|
|
14
14
|
return sub;
|
|
15
15
|
}
|
|
16
16
|
return any;
|
|
@@ -5,16 +5,16 @@ const getSessionSingleton = require('../getSessionSingleton');
|
|
|
5
5
|
const _quote = require('../quote');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
function childColumn(column, relations) {
|
|
9
|
-
const quote = getSessionSingleton('quote');
|
|
10
|
-
const
|
|
11
|
-
const outerAlias = 'y' +
|
|
8
|
+
function childColumn(context, column, relations) {
|
|
9
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
10
|
+
const rdb = getSessionContext(context);
|
|
11
|
+
const outerAlias = 'y' + rdb.aggregateCount++;
|
|
12
12
|
const outerAliasQuoted = quote(outerAlias);
|
|
13
13
|
const alias = 'x' + relations.length;
|
|
14
|
-
const foreignKeys = getForeignKeys(relations[0]);
|
|
14
|
+
const foreignKeys = getForeignKeys(context, relations[0]);
|
|
15
15
|
const select = ` LEFT JOIN (SELECT ${foreignKeys},${alias}.${quote(column._dbName)} as prop`;
|
|
16
|
-
const innerJoin = relations.length > 1 ? newJoin(relations).sql() : '';
|
|
17
|
-
const onClause = createOnClause(relations[0], outerAlias);
|
|
16
|
+
const innerJoin = relations.length > 1 ? newJoin(context, relations).sql() : '';
|
|
17
|
+
const onClause = createOnClause(context, relations[0], outerAlias);
|
|
18
18
|
const from = ` FROM ${quote(relations.at(-1).childTable._dbName)} ${alias} ${innerJoin}) ${outerAliasQuoted} ON (${onClause})`;
|
|
19
19
|
const join = select + from ;
|
|
20
20
|
|
|
@@ -26,13 +26,13 @@ function childColumn(column, relations) {
|
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
function createOnClause(relation, rightAlias) {
|
|
29
|
+
function createOnClause(context, relation, rightAlias) {
|
|
30
30
|
var c = {};
|
|
31
31
|
var sql = '';
|
|
32
32
|
let leftAlias = relation.parentTable._rootAlias || relation.parentTable._dbName;
|
|
33
33
|
|
|
34
34
|
c.visitJoin = function(relation) {
|
|
35
|
-
sql = newJoinCore(relation.childTable,relation.columns,relation.childTable._primaryColumns,leftAlias,rightAlias).sql();
|
|
35
|
+
sql = newJoinCore(context, relation.childTable,relation.columns,relation.childTable._primaryColumns,leftAlias,rightAlias).sql();
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
c.visitOne = function(relation) {
|
|
@@ -47,20 +47,20 @@ function createOnClause(relation, rightAlias) {
|
|
|
47
47
|
var parentTable = relation.parentTable;
|
|
48
48
|
var columns = joinRelation.columns;
|
|
49
49
|
|
|
50
|
-
sql = newJoinCore(childTable,parentTable._primaryColumns,columns,leftAlias, rightAlias).sql();
|
|
50
|
+
sql = newJoinCore(context, childTable,parentTable._primaryColumns,columns,leftAlias, rightAlias).sql();
|
|
51
51
|
}
|
|
52
52
|
relation.accept(c);
|
|
53
53
|
return sql;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
function getForeignKeys(relation) {
|
|
56
|
+
function getForeignKeys(context, relation) {
|
|
57
57
|
let columns;
|
|
58
58
|
let alias = 'x1';
|
|
59
59
|
if (relation.joinRelation)
|
|
60
60
|
columns = relation.joinRelation.columns;
|
|
61
61
|
else
|
|
62
62
|
columns = relation.childTable._primaryColumns;
|
|
63
|
-
return columns.map(x => `${alias}.${_quote(x._dbName)}`).join(',');
|
|
63
|
+
return columns.map(x => `${alias}.${_quote(context, x._dbName)}`).join(',');
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
module.exports = childColumn;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const getSessionSingleton = require('../getSessionSingleton');
|
|
2
2
|
var newJoinArray = require('./joinSqlArray');
|
|
3
3
|
|
|
4
|
-
function columnAggregate(operator, column, relations, coalesce = true) {
|
|
5
|
-
const quote = getSessionSingleton('quote');
|
|
4
|
+
function columnAggregate(context, operator, column, relations, coalesce = true) {
|
|
5
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
6
6
|
|
|
7
7
|
let tableAlias = relations.reduce((prev,relation) => {
|
|
8
8
|
return prev + relation.toLeg().name;
|
|
@@ -13,7 +13,7 @@ function columnAggregate(operator, column, relations, coalesce = true) {
|
|
|
13
13
|
return {
|
|
14
14
|
expression: (alias) => coalesce ? `COALESCE(${operator}(${tableAlias}.${columnName}), 0) as ${quote(alias)}` : `${operator}(${tableAlias}.${columnName}) as ${alias}`,
|
|
15
15
|
|
|
16
|
-
joins: newJoinArray(relations)
|
|
16
|
+
joins: newJoinArray(context, relations)
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -3,21 +3,21 @@ var getSessionContext = require('../getSessionContext');
|
|
|
3
3
|
var newJoinCore = require('../query/singleQuery/joinSql/newShallowJoinSqlCore');
|
|
4
4
|
const getSessionSingleton = require('../getSessionSingleton');
|
|
5
5
|
|
|
6
|
-
function columnAggregate(operator, column, relations, coalesce = true) {
|
|
7
|
-
const quote = getSessionSingleton('quote');
|
|
8
|
-
const
|
|
9
|
-
const outerAlias = 'y' +
|
|
6
|
+
function columnAggregate(context, operator, column, relations, coalesce = true) {
|
|
7
|
+
const quote = getSessionSingleton(context, 'quote');
|
|
8
|
+
const rdb = getSessionContext(context);
|
|
9
|
+
const outerAlias = 'y' + rdb.aggregateCount++;
|
|
10
10
|
const outerAliasQuoted = quote(outerAlias);
|
|
11
11
|
const alias = quote('x' + relations.length);
|
|
12
12
|
const foreignKeys = getForeignKeys(relations[0]);
|
|
13
13
|
const select = ` LEFT JOIN (SELECT ${foreignKeys},${operator}(${alias}.${quote(column._dbName)}) as amount`;
|
|
14
|
-
const innerJoin = relations.length > 1 ? newJoin(relations).sql() : '';
|
|
15
|
-
const onClause = createOnClause(relations[0], outerAlias);
|
|
14
|
+
const innerJoin = relations.length > 1 ? newJoin(context, relations).sql() : '';
|
|
15
|
+
const onClause = createOnClause(context, relations[0], outerAlias);
|
|
16
16
|
const from = ` FROM ${quote(relations.at(-1).childTable._dbName)} ${alias} ${innerJoin} GROUP BY ${foreignKeys}) ${outerAliasQuoted} ON (${onClause})`;
|
|
17
|
-
const join = select
|
|
17
|
+
const join = select + from;
|
|
18
18
|
|
|
19
19
|
return {
|
|
20
|
-
expression: (alias) => coalesce? `COALESCE(${outerAliasQuoted}.amount, 0) as ${quote(alias)}` : `${outerAliasQuoted}.amount as ${alias}`,
|
|
20
|
+
expression: (alias) => coalesce ? `COALESCE(${outerAliasQuoted}.amount, 0) as ${quote(alias)}` : `${outerAliasQuoted}.amount as ${alias}`,
|
|
21
21
|
joins: [join]
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -32,13 +32,13 @@ function columnAggregate(operator, column, relations, coalesce = true) {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function createOnClause(relation, rightAlias) {
|
|
35
|
+
function createOnClause(context, relation, rightAlias) {
|
|
36
36
|
var c = {};
|
|
37
37
|
var sql = '';
|
|
38
38
|
let leftAlias = relation.parentTable._rootAlias || relation.parentTable._dbName;
|
|
39
39
|
|
|
40
40
|
c.visitJoin = function(relation) {
|
|
41
|
-
sql = newJoinCore(relation.childTable,relation.columns,relation.childTable._primaryColumns,leftAlias,rightAlias).sql();
|
|
41
|
+
sql = newJoinCore(context, relation.childTable, relation.columns, relation.childTable._primaryColumns, leftAlias, rightAlias).sql();
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
c.visitOne = function(relation) {
|
|
@@ -53,7 +53,7 @@ function createOnClause(relation, rightAlias) {
|
|
|
53
53
|
var parentTable = relation.parentTable;
|
|
54
54
|
var columns = joinRelation.columns;
|
|
55
55
|
|
|
56
|
-
sql = newJoinCore(childTable,parentTable._primaryColumns,columns,leftAlias, rightAlias).sql();
|
|
56
|
+
sql = newJoinCore(context, childTable, parentTable._primaryColumns, columns, leftAlias, rightAlias).sql();
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
relation.accept(c);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var newShallowJoinSql = require('../query/singleQuery/joinSql/newShallowJoinSql');
|
|
2
2
|
var newParameterized = require('../query/newParameterized');
|
|
3
3
|
|
|
4
|
-
function newJoinSql(relations, depth = 0) {
|
|
4
|
+
function newJoinSql(context, relations, depth = 0) {
|
|
5
5
|
var leftAlias,
|
|
6
6
|
rightAlias;
|
|
7
7
|
var relation;
|
|
@@ -10,7 +10,7 @@ function newJoinSql(relations, depth = 0) {
|
|
|
10
10
|
|
|
11
11
|
c.visitJoin = function(relation) {
|
|
12
12
|
//todo fix discriminators on childTable
|
|
13
|
-
sql = newShallowJoinSql(relation.parentTable,relation.childTable._primaryColumns,relation.columns,leftAlias,rightAlias).prepend(' INNER').prepend(sql);
|
|
13
|
+
sql = newShallowJoinSql(context, relation.parentTable, relation.childTable._primaryColumns, relation.columns, leftAlias, rightAlias).prepend(' INNER').prepend(sql);
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
c.visitOne = function(relation) {
|
|
@@ -25,11 +25,11 @@ function newJoinSql(relations, depth = 0) {
|
|
|
25
25
|
var rightColumns = table._primaryColumns;
|
|
26
26
|
var leftColumns = joinRelation.columns;
|
|
27
27
|
|
|
28
|
-
sql = newShallowJoinSql(table,leftColumns,rightColumns,leftAlias,rightAlias).prepend(' INNER').prepend(sql);
|
|
28
|
+
sql = newShallowJoinSql(context, table, leftColumns, rightColumns, leftAlias, rightAlias).prepend(' INNER').prepend(sql);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
for (let i = relations.length-1; i > depth; i--) {
|
|
32
|
-
leftAlias = 'x' + (i+1);
|
|
31
|
+
for (let i = relations.length - 1; i > depth; i--) {
|
|
32
|
+
leftAlias = 'x' + (i + 1);
|
|
33
33
|
rightAlias = 'x' + i;
|
|
34
34
|
relation = relations[i];
|
|
35
35
|
relation.accept(c);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const newShallowJoinSql = require('../query/singleQuery/joinSql/newShallowJoinSql');
|
|
2
2
|
|
|
3
|
-
function _new(relations) {
|
|
3
|
+
function _new(context, relations) {
|
|
4
4
|
|
|
5
5
|
let result = [];
|
|
6
6
|
let leftAlias = relations[0].parentTable._dbName;
|
|
@@ -10,11 +10,11 @@ function _new(relations) {
|
|
|
10
10
|
|
|
11
11
|
let c = {};
|
|
12
12
|
c.visitJoin = function(relation) {
|
|
13
|
-
sql = newShallowJoinSql(relation.childTable,relation.columns,relation.childTable._primaryColumns,leftAlias,rightAlias).prepend(' LEFT').sql();
|
|
13
|
+
sql = newShallowJoinSql(context, relation.childTable,relation.columns,relation.childTable._primaryColumns,leftAlias,rightAlias).prepend(' LEFT').sql();
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
c.visitOne = function(relation) {
|
|
17
|
-
sql = newShallowJoinSql(relation.childTable,relation.parentTable._primaryColumns,relation.joinRelation.columns,leftAlias,rightAlias).prepend(' LEFT').sql();
|
|
17
|
+
sql = newShallowJoinSql(context, relation.childTable,relation.parentTable._primaryColumns,relation.joinRelation.columns,leftAlias,rightAlias).prepend(' LEFT').sql();
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
c.visitMany = c.visitOne;
|
|
@@ -5,11 +5,11 @@ let isShallow = true;
|
|
|
5
5
|
|
|
6
6
|
function newNone(relations, depth) {
|
|
7
7
|
|
|
8
|
-
function none(fn) {
|
|
8
|
+
function none(context, fn) {
|
|
9
9
|
let relatedTable = newRelatedTable(relations, isShallow, depth + 1);
|
|
10
10
|
let arg = typeof fn === 'function' ? fn(relatedTable) : fn;
|
|
11
|
-
let filter = negotiateRawSqlFilter(arg);
|
|
12
|
-
return subFilter(relations, filter, depth).not();
|
|
11
|
+
let filter = negotiateRawSqlFilter(context, arg);
|
|
12
|
+
return subFilter(context, relations, filter, depth).not();
|
|
13
13
|
}
|
|
14
14
|
return none;
|
|
15
15
|
}
|
|
@@ -14,24 +14,24 @@ function newRelatedColumn(column, relations, isShallow, depth) {
|
|
|
14
14
|
c[propName] = wrapFilter(prop);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
c.groupSum = aggregateGroup.
|
|
18
|
-
c.groupAvg = aggregateGroup.
|
|
19
|
-
c.groupMin = aggregateGroup.
|
|
20
|
-
c.groupMax = aggregateGroup.
|
|
21
|
-
c.groupCount = aggregateGroup.
|
|
22
|
-
c.sum = aggregate.
|
|
23
|
-
c.avg = aggregate.
|
|
24
|
-
c.min = aggregate.
|
|
25
|
-
c.max = aggregate.
|
|
26
|
-
c.count = aggregate.
|
|
27
|
-
c.self = childColumn.
|
|
17
|
+
c.groupSum = (context, ...rest) => aggregateGroup.apply(null, [context, 'sum', column, relations, ...rest]);
|
|
18
|
+
c.groupAvg = (context, ...rest) => aggregateGroup.apply(null, [context, 'avg', column, relations, ...rest]);
|
|
19
|
+
c.groupMin = (context, ...rest) => aggregateGroup.apply(null, [context, 'min', column, relations, ...rest]);
|
|
20
|
+
c.groupMax = (context, ...rest) => aggregateGroup.apply(null, [context, 'max', column, relations, ...rest]);
|
|
21
|
+
c.groupCount = (context, ...rest) => aggregateGroup.apply(null, [context, 'count', column, relations, false, ...rest]);
|
|
22
|
+
c.sum = (context, ...rest) => aggregate.apply(null, [context, 'sum', column, relations, ...rest]);
|
|
23
|
+
c.avg = (context, ...rest) => aggregate.apply(null, [context, 'avg', column, relations, ...rest]);
|
|
24
|
+
c.min = (context, ...rest) => aggregate.apply(null, [context, 'min', column, relations, ...rest]);
|
|
25
|
+
c.max = (context, ...rest) => aggregate.apply(null, [context, 'max', column, relations, ...rest]);
|
|
26
|
+
c.count = (context, ...rest) => aggregate.apply(null, [context, 'count', column, relations, false, ...rest]);
|
|
27
|
+
c.self = (context, ...rest) => childColumn.apply(null, [context, column, relations, ...rest]);
|
|
28
28
|
|
|
29
29
|
return c;
|
|
30
30
|
|
|
31
31
|
function wrapFilter(filter) {
|
|
32
32
|
return runFilter;
|
|
33
33
|
|
|
34
|
-
function runFilter() {
|
|
34
|
+
function runFilter(context) {
|
|
35
35
|
var args = [];
|
|
36
36
|
for (var i = 0; i < arguments.length; i++) {
|
|
37
37
|
args.push(arguments[i]);
|
|
@@ -40,7 +40,7 @@ function newRelatedColumn(column, relations, isShallow, depth) {
|
|
|
40
40
|
var shallowFilter = filter.apply(null, args);
|
|
41
41
|
if (isShallow)
|
|
42
42
|
return shallowFilter;
|
|
43
|
-
return newSubFilter(relations, shallowFilter, depth);
|
|
43
|
+
return newSubFilter(context, relations, shallowFilter, depth);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|