orange-orm 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/docs/changelog.md +6 -1
- package/package.json +2 -2
- package/src/ajv.d.ts +47 -0
- package/src/getManyDto/query/newSingleQuery.js +4 -3
- package/src/getTSDefinition.js +8 -4
- package/src/index.d.ts +5 -5
- package/src/map.d.ts +22 -14
- package/src/mssql/newTransaction.js +1 -0
- package/src/mySql/deleteFromSql.js +3 -1
- package/src/mySql/insertSql.js +14 -7
- package/src/mySql/lastInsertedSql.js +4 -1
- package/src/mySql/newTransaction.js +1 -0
- package/src/oracle/deleteFromSql.js +3 -1
- package/src/oracle/formatDateOut.js +3 -1
- package/src/oracle/insertSql.js +8 -5
- package/src/oracle/mergeSql.js +15 -12
- package/src/oracle/newTransaction.js +1 -0
- package/src/oracle/selectForUpdateSql.js +3 -1
- package/src/pg/deleteFromSql.js +3 -1
- package/src/pg/formatDateOut.js +3 -1
- package/src/pg/insertSql.js +12 -7
- package/src/pg/lastInsertedSql.js +4 -1
- package/src/pg/newTransaction.js +1 -0
- package/src/pg/selectForUpdateSql.js +3 -1
- package/src/sap/deleteFromSql.js +3 -1
- package/src/sap/formatDateOut.js +3 -1
- package/src/sap/insertSql.js +6 -3
- package/src/sap/mergeSql.js +14 -11
- package/src/sap/newTransaction.js +1 -0
- package/src/sap/selectForUpdateSql.js +3 -1
- package/src/sqlite/deleteFromSql.js +3 -1
- package/src/sqlite/insertSql.js +11 -8
- package/src/sqlite/newTransaction.js +1 -0
- package/src/sqlite/selectForUpdateSql.js +3 -1
- package/src/table/column/date/formatOut.js +4 -1
- package/src/table/column/equal.js +2 -1
- package/src/table/column/extractAlias.js +2 -0
- package/src/table/column/greaterThan.js +2 -1
- package/src/table/column/greaterThanOrEqual.js +2 -1
- package/src/table/column/in.js +2 -1
- package/src/table/column/json/formatOut.js +2 -1
- package/src/table/column/lessThan.js +2 -1
- package/src/table/column/lessThanOrEqual.js +3 -1
- package/src/table/column/newColumn.js +6 -3
- package/src/table/column/notEqual.js +2 -1
- package/src/table/column/string/containsCore.js +3 -1
- package/src/table/column/string/endsWithCore.js +3 -1
- package/src/table/column/string/iEqual.js +2 -1
- package/src/table/column/string/startsWithCore.js +2 -1
- package/src/table/commands/delete/singleCommand/selectSql.js +4 -2
- package/src/table/commands/insert/getSqlTemplate.js +4 -5
- package/src/table/commands/newGetLastInsertedCommandCore.js +7 -5
- package/src/table/commands/newUpdateCommandCore.js +5 -3
- package/src/table/count.js +3 -1
- package/src/table/newRelatedTable.js +0 -1
- package/src/table/query/extractOrderBy.js +5 -1
- package/src/table/query/newSingleQuery.js +3 -2
- package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +7 -3
- package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +3 -1
- package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +4 -1
- package/src/table/query/singleQuery/newDiscriminatorSql.js +6 -2
- package/src/table/quote.js +11 -0
- package/src/table/readStream/extractOrderBy.js +5 -1
- package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +2 -1
- package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +2 -1
- package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +2 -1
- package/src/table/relatedTable/childColumn.js +10 -5
- package/src/table/relatedTable/columnAggregate.js +6 -2
- package/src/table/relatedTable/columnAggregateGroup.js +19 -13
- package/src/table/relatedTable/selectSql.js +7 -4
- package/src/table/relatedTable/whereSql.js +3 -0
- package/src/tedious/deleteFromSql.js +3 -1
- package/src/tedious/formatDateOut.js +3 -1
- package/src/tedious/formatJSONOut.js +1 -1
- package/src/tedious/getManyDto/query/newSingleQuery.js +1 -3
- package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +6 -2
- package/src/tedious/insertSql.js +3 -5
- package/src/tedious/mergeSql.js +11 -12
- package/src/tedious/newTransaction.js +1 -0
- package/src/tedious/selectForUpdateSql.js +3 -1
- package/src/getManyDto/query/newColumnSql.js +0 -8
- package/src/getManyDto/query/singleQuery/newJoinedColumnSql.js +0 -25
- package/src/getManyDto/query/singleQuery/newShallowColumnSql.js +0 -25
- package/src/table/getManyDtoFast/getSubRows.js +0 -172
- package/src/table/getManyDtoFast/newQuery.js +0 -8
- package/src/table/getManyDtoFast/newQueryCore.js +0 -18
- package/src/table/getManyDtoFast/query/newSingleQuery.js +0 -20
- package/src/table/getManyDtoFast/query/newSubQueries/joinLegToQuery.js +0 -18
- package/src/table/getManyDtoFast/query/newSubQueries/manyLegToQuery.js +0 -20
- package/src/table/getManyDtoFast/query/newSubQueries/oneLegToQuery.js +0 -21
- package/src/table/getManyDtoFast/query/newSubQueries.js +0 -47
- package/src/table/getManyDtoFast/query/singleQuery/newShallowColumnSql.js +0 -21
package/src/sap/deleteFromSql.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
var format = 'delete from %s from %s as %s %s';
|
|
2
2
|
var util = require('util');
|
|
3
|
+
const quote = require('../table/quote');
|
|
3
4
|
|
|
4
5
|
function deleteFromSql(table, alias, whereSql) {
|
|
5
|
-
var name = table._dbName;
|
|
6
|
+
var name = quote(table._dbName);
|
|
7
|
+
alias = quote(alias) ;
|
|
6
8
|
return util.format(format, name, name, alias, whereSql);
|
|
7
9
|
}
|
|
8
10
|
module.exports = deleteFromSql;
|
package/src/sap/formatDateOut.js
CHANGED
package/src/sap/insertSql.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const getSessionSingleton = require('../table/getSessionSingleton');
|
|
1
2
|
const mergeSql = require('./mergeSql');
|
|
2
3
|
|
|
3
4
|
function getSqlTemplate(_table, _row, options) {
|
|
@@ -26,10 +27,11 @@ function hasConcurrency(table,options) {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
function insertSql(table, row) {
|
|
30
|
+
const quote = getSessionSingleton('quote');
|
|
29
31
|
let columnNames = [];
|
|
30
32
|
let regularColumnNames = [];
|
|
31
33
|
let values = [];
|
|
32
|
-
let sql = 'INSERT INTO ' + table._dbName + ' ';
|
|
34
|
+
let sql = 'INSERT INTO ' + quote(table._dbName) + ' ';
|
|
33
35
|
addDiscriminators();
|
|
34
36
|
addColumns();
|
|
35
37
|
if (columnNames.length === 0)
|
|
@@ -42,7 +44,7 @@ function insertSql(table, row) {
|
|
|
42
44
|
let discriminators = table._columnDiscriminators;
|
|
43
45
|
for (let i = 0; i < discriminators.length; i++) {
|
|
44
46
|
let parts = discriminators[i].split('=');
|
|
45
|
-
columnNames.push(parts[0]);
|
|
47
|
+
columnNames.push(quote(parts[0]));
|
|
46
48
|
values.push(parts[1]);
|
|
47
49
|
}
|
|
48
50
|
}
|
|
@@ -51,9 +53,10 @@ function insertSql(table, row) {
|
|
|
51
53
|
let columns = table._columns;
|
|
52
54
|
for (let i = 0; i < columns.length; i++) {
|
|
53
55
|
let column = columns[i];
|
|
56
|
+
const columnName = quote(column._dbName);
|
|
54
57
|
regularColumnNames.push(column._dbName);
|
|
55
58
|
if (row['__' + column.alias] !== undefined) {
|
|
56
|
-
columnNames.push(
|
|
59
|
+
columnNames.push(columnName);
|
|
57
60
|
values.push('%s');
|
|
58
61
|
}
|
|
59
62
|
}
|
package/src/sap/mergeSql.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
const getSessionSingleton = require('../table/getSessionSingleton');
|
|
2
|
+
|
|
1
3
|
function insertSql(table, row, options) {
|
|
4
|
+
const quote = getSessionSingleton('quote');
|
|
2
5
|
let columnNames = [];
|
|
3
|
-
let regularColumnNames = [];
|
|
4
6
|
let conflictColumnUpdateSql = '';
|
|
5
7
|
let values = [];
|
|
6
8
|
addDiscriminators();
|
|
@@ -9,19 +11,19 @@ function insertSql(table, row, options) {
|
|
|
9
11
|
const matched = whenMatched();
|
|
10
12
|
let sql;
|
|
11
13
|
if (matched)
|
|
12
|
-
sql = `MERGE INTO ${table._dbName} AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN MATCHED THEN ${matched} WHEN NOT MATCHED THEN ${whenNotMatched()};`;
|
|
14
|
+
sql = `MERGE INTO ${quote(table._dbName)} AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN MATCHED THEN ${matched} WHEN NOT MATCHED THEN ${whenNotMatched()};`;
|
|
13
15
|
else
|
|
14
|
-
sql = `MERGE INTO ${table._dbName} AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN NOT MATCHED THEN ${whenNotMatched()};`;
|
|
16
|
+
sql = `MERGE INTO ${quote(table._dbName)} AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN NOT MATCHED THEN ${whenNotMatched()};`;
|
|
15
17
|
|
|
16
18
|
return sql;
|
|
17
19
|
|
|
18
20
|
function join() {
|
|
19
21
|
const discriminators = table._columnDiscriminators.map(x => {
|
|
20
|
-
const name = x.split('=')[0];
|
|
22
|
+
const name = quote(x.split('=')[0]);
|
|
21
23
|
|
|
22
24
|
return `target.${name}=source.${name}`;
|
|
23
25
|
});
|
|
24
|
-
const primaries = table._primaryColumns.map(x => `target.${x._dbName}=source.${x._dbName}`);
|
|
26
|
+
const primaries = table._primaryColumns.map(x => `target.${quote(x._dbName)}=source.${quote(x._dbName)}`);
|
|
25
27
|
return [...discriminators, ...primaries].join(' AND ');
|
|
26
28
|
}
|
|
27
29
|
|
|
@@ -40,7 +42,7 @@ function insertSql(table, row, options) {
|
|
|
40
42
|
let discriminators = table._columnDiscriminators;
|
|
41
43
|
for (let i = 0; i < discriminators.length; i++) {
|
|
42
44
|
let parts = discriminators[i].split('=');
|
|
43
|
-
columnNames.push(parts[0]);
|
|
45
|
+
columnNames.push(quote(parts[0]));
|
|
44
46
|
values.push(`${parts[1]} AS ${parts[0]}`);
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -50,10 +52,10 @@ function insertSql(table, row, options) {
|
|
|
50
52
|
let columns = table._columns;
|
|
51
53
|
for (let i = 0; i < columns.length; i++) {
|
|
52
54
|
let column = columns[i];
|
|
53
|
-
|
|
55
|
+
const columnName = quote(column._dbName);
|
|
54
56
|
if (row['__' + column.alias] !== undefined) {
|
|
55
|
-
columnNames.push(
|
|
56
|
-
values.push(`%s AS ${column.alias}`);
|
|
57
|
+
columnNames.push(columnName);
|
|
58
|
+
values.push(`%s AS ${quote(column.alias)}`);
|
|
57
59
|
addConflictUpdate(column);
|
|
58
60
|
}
|
|
59
61
|
}
|
|
@@ -62,10 +64,11 @@ function insertSql(table, row, options) {
|
|
|
62
64
|
|
|
63
65
|
function addConflictUpdate(column) {
|
|
64
66
|
let concurrency = options[column.alias]?.concurrency || options.concurrency;
|
|
67
|
+
const columnName = quote(column._dbName);
|
|
65
68
|
if (concurrency === 'overwrite')
|
|
66
|
-
conflictColumnUpdates.push(`target.${
|
|
69
|
+
conflictColumnUpdates.push(`target.${columnName}=source.${columnName}`);
|
|
67
70
|
else if (concurrency === 'optimistic')
|
|
68
|
-
conflictColumnUpdates.push(`target.${
|
|
71
|
+
conflictColumnUpdates.push(`target.${columnName} = CASE WHEN target.${columnName} <> source.${columnName} THEN CAST('12345678-1234-1234-1234-123456789012Conflict when updating ${columnName}12345678-1234-1234-1234-123456789012' AS INTEGER) ELSE target.${columnName} END`);
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
var format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
|
|
2
2
|
var util = require('util');
|
|
3
|
+
const quote = require('../table/quote');
|
|
3
4
|
|
|
4
5
|
function deleteFromSql(table, alias, whereSql) {
|
|
5
|
-
var name = table._dbName;
|
|
6
|
+
var name = quote(table._dbName);
|
|
7
|
+
alias = quote(alias);
|
|
6
8
|
return util.format(format, name, name, alias, name, alias, whereSql);
|
|
7
9
|
}
|
|
8
10
|
module.exports = deleteFromSql;
|
package/src/sqlite/insertSql.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
const quote = require('../table/quote');
|
|
2
|
+
|
|
1
3
|
function insertSql(table, row, options) {
|
|
2
4
|
let columnNames = [];
|
|
3
|
-
let regularColumnNames = [];
|
|
4
5
|
let conflictColumnUpdateSql = '';
|
|
5
6
|
let values = [];
|
|
6
7
|
|
|
7
|
-
let sql = 'INSERT INTO ' + table._dbName + ' ';
|
|
8
|
+
let sql = 'INSERT INTO ' + quote(table._dbName) + ' ';
|
|
8
9
|
addDiscriminators();
|
|
9
10
|
addColumns();
|
|
10
11
|
|
|
@@ -18,7 +19,7 @@ function insertSql(table, row, options) {
|
|
|
18
19
|
|
|
19
20
|
function onConflict() {
|
|
20
21
|
if (options.concurrency === 'skipOnConflict' || options.concurrency === 'overwrite') {
|
|
21
|
-
const primaryKeys = table._primaryColumns.map(x => x._dbName).join(',');
|
|
22
|
+
const primaryKeys = table._primaryColumns.map(x => quote(x._dbName)).join(',');
|
|
22
23
|
return ` ON CONFLICT(${primaryKeys}) ${conflictColumnUpdateSql}`;
|
|
23
24
|
} else {
|
|
24
25
|
return '';
|
|
@@ -29,7 +30,7 @@ function insertSql(table, row, options) {
|
|
|
29
30
|
let discriminators = table._columnDiscriminators;
|
|
30
31
|
for (let i = 0; i < discriminators.length; i++) {
|
|
31
32
|
let parts = discriminators[i].split('=');
|
|
32
|
-
columnNames.push(parts[0]);
|
|
33
|
+
columnNames.push(quote(parts[0]));
|
|
33
34
|
values.push(parts[1]);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -39,9 +40,9 @@ function insertSql(table, row, options) {
|
|
|
39
40
|
let columns = table._columns;
|
|
40
41
|
for (let i = 0; i < columns.length; i++) {
|
|
41
42
|
let column = columns[i];
|
|
42
|
-
|
|
43
|
+
const columnName = quote(column._dbName);
|
|
43
44
|
if (row['__' + column.alias] !== undefined) {
|
|
44
|
-
columnNames.push(
|
|
45
|
+
columnNames.push(columnName);
|
|
45
46
|
values.push('%s');
|
|
46
47
|
addConflictUpdate(column);
|
|
47
48
|
}
|
|
@@ -53,10 +54,12 @@ function insertSql(table, row, options) {
|
|
|
53
54
|
|
|
54
55
|
function addConflictUpdate(column) {
|
|
55
56
|
let concurrency = options[column.alias]?.concurrency || options.concurrency;
|
|
57
|
+
const tableName = table._dbName;
|
|
58
|
+
const columnName = quote(column._dbName);
|
|
56
59
|
if (concurrency === 'overwrite') {
|
|
57
|
-
conflictColumnUpdates.push(`${
|
|
60
|
+
conflictColumnUpdates.push(`${columnName}=excluded.${columnName}`);
|
|
58
61
|
} else if (concurrency === 'optimistic')
|
|
59
|
-
conflictColumnUpdates.push(`${
|
|
62
|
+
conflictColumnUpdates.push(`${columnName} = CASE WHEN ${tableName}.${columnName} <> excluded.${columnName} THEN '12345678-1234-1234-1234-123456789012Conflict when updating ${columnName}12345678-1234-1234-1234-123456789012' ELSE ${tableName}.${columnName} END`);
|
|
60
63
|
}
|
|
61
64
|
}
|
|
62
65
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
var getSessionSingleton = require('../../getSessionSingleton');
|
|
2
|
+
const quote = require('../../quote');
|
|
3
|
+
|
|
4
|
+
//todo fix
|
|
2
5
|
|
|
3
6
|
function formatOut(column, alias) {
|
|
4
7
|
var formatColumn = getSessionSingleton('formatDateOut');
|
|
5
8
|
if (formatColumn)
|
|
6
9
|
return formatColumn(column, alias);
|
|
7
10
|
else
|
|
8
|
-
return `${alias}.${column._dbName}`;
|
|
11
|
+
return `${alias}.${quote(column._dbName)}`;
|
|
9
12
|
}
|
|
10
13
|
|
|
11
14
|
module.exports = formatOut;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
var newBoolean = require('./newBoolean');
|
|
2
2
|
var nullOperator = ' is ';
|
|
3
3
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
4
|
+
var quote = require('../quote');
|
|
4
5
|
|
|
5
6
|
function equal(column,arg,alias) {
|
|
6
7
|
var operator = '=';
|
|
7
8
|
var encoded = encodeFilterArg(column, arg);
|
|
8
9
|
if (encoded.sql() == 'null')
|
|
9
10
|
operator = nullOperator;
|
|
10
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
11
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
11
12
|
var filter = encoded.prepend(firstPart);
|
|
12
13
|
return newBoolean(filter);
|
|
13
14
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
var newBoolean = require('./newBoolean');
|
|
2
2
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
3
|
+
var quote = require('../quote');
|
|
3
4
|
|
|
4
5
|
function greaterThan(column,arg,alias) {
|
|
5
6
|
var operator = '>';
|
|
6
7
|
var encoded = encodeFilterArg(column, arg);
|
|
7
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
8
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
8
9
|
var filter = encoded.prepend(firstPart);
|
|
9
10
|
return newBoolean(filter);
|
|
10
11
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
var newBoolean = require('./newBoolean');
|
|
2
2
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
3
|
+
var quote = require('../quote');
|
|
3
4
|
|
|
4
5
|
function greaterThanOrEqual(column,arg,alias) {
|
|
5
6
|
var operator = '>=';
|
|
6
7
|
var encoded = encodeFilterArg(column, arg);
|
|
7
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
8
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
8
9
|
var filter = encoded.prepend(firstPart);
|
|
9
10
|
return newBoolean(filter);
|
|
10
11
|
}
|
package/src/table/column/in.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var newParameterized = require('../query/newParameterized');
|
|
2
2
|
var newBoolean = require('./newBoolean');
|
|
3
3
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
4
|
+
var quote = require('../quote');
|
|
4
5
|
|
|
5
6
|
function _in(column,values,alias) {
|
|
6
7
|
var filter;
|
|
@@ -8,7 +9,7 @@ function _in(column,values,alias) {
|
|
|
8
9
|
filter = newParameterized('1=2');
|
|
9
10
|
return newBoolean(filter);
|
|
10
11
|
}
|
|
11
|
-
var firstPart = alias + '.' + column._dbName + ' in ';
|
|
12
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + ' in ';
|
|
12
13
|
var parameterized = newParameterized(firstPart);
|
|
13
14
|
var separator = '(';
|
|
14
15
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
var getSessionSingleton = require('../../getSessionSingleton');
|
|
2
|
+
const quote = require('../../quote');
|
|
2
3
|
|
|
3
4
|
function formatOut(column, alias) {
|
|
4
5
|
var formatColumn = getSessionSingleton('formatJSONOut');
|
|
5
6
|
if (formatColumn)
|
|
6
7
|
return formatColumn(column, alias);
|
|
7
8
|
else
|
|
8
|
-
return `${alias}.${column._dbName}`;
|
|
9
|
+
return `${alias}.${quote(column._dbName)}`;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
module.exports = formatOut;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
var newBoolean = require('./newBoolean');
|
|
2
2
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
3
|
+
var quote = require('../quote');
|
|
3
4
|
|
|
4
5
|
function lessThanOrEqual(column,arg,alias) {
|
|
5
6
|
var operator = '<';
|
|
6
7
|
var encoded = encodeFilterArg(column, arg);
|
|
7
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
8
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
8
9
|
var filter = encoded.prepend(firstPart);
|
|
9
10
|
return newBoolean(filter);
|
|
10
11
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
var newBoolean = require('./newBoolean');
|
|
2
2
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
3
|
+
const getSessionSingleton = require('../getSessionSingleton');
|
|
3
4
|
|
|
4
5
|
function lessThanOrEqual(column,arg,alias) {
|
|
6
|
+
const quote = getSessionSingleton('quote');
|
|
5
7
|
var operator = '<=';
|
|
6
8
|
var encoded = encodeFilterArg(column, arg);
|
|
7
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
9
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
8
10
|
var filter = encoded.prepend(firstPart);
|
|
9
11
|
return newBoolean(filter);
|
|
10
12
|
}
|
|
@@ -6,6 +6,7 @@ const greaterThan = require('./greaterThan');
|
|
|
6
6
|
const greaterThanOrEqual = require('./greaterThanOrEqual');
|
|
7
7
|
const _in = require('./in');
|
|
8
8
|
const _extractAlias = require('./extractAlias');
|
|
9
|
+
const quote = require('../../table/quote');
|
|
9
10
|
|
|
10
11
|
module.exports = function(table, name) {
|
|
11
12
|
var c = {};
|
|
@@ -76,12 +77,14 @@ module.exports = function(table, name) {
|
|
|
76
77
|
c.self = self;
|
|
77
78
|
|
|
78
79
|
function self() {
|
|
79
|
-
const tableAlias = table._rootAlias || table._dbName;
|
|
80
|
+
const tableAlias = quote(table._rootAlias || table._dbName);
|
|
81
|
+
const columnName = quote(c._dbName);
|
|
82
|
+
|
|
80
83
|
return {
|
|
81
|
-
expression: (alias) => `${tableAlias}.${
|
|
84
|
+
expression: (alias) => `${tableAlias}.${columnName} ${quote(alias)}`,
|
|
82
85
|
joins: [''],
|
|
83
86
|
column: c,
|
|
84
|
-
groupBy: `${tableAlias}.${
|
|
87
|
+
groupBy: `${tableAlias}.${columnName}`
|
|
85
88
|
};
|
|
86
89
|
}
|
|
87
90
|
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
var newBoolean = require('./newBoolean');
|
|
2
2
|
var encodeFilterArg = require('./encodeFilterArg');
|
|
3
3
|
var nullOperator = ' is not ';
|
|
4
|
+
var quote = require('../quote');
|
|
4
5
|
|
|
5
6
|
function notEqual(column,arg,alias) {
|
|
6
7
|
var operator = '<>';
|
|
7
8
|
var encoded = encodeFilterArg(column, arg);
|
|
8
9
|
if (encoded.sql() == 'null')
|
|
9
10
|
operator = nullOperator;
|
|
10
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
11
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
11
12
|
var filter = encoded.prepend(firstPart);
|
|
12
13
|
return newBoolean(filter);
|
|
13
14
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
const quote = require('../../quote');
|
|
1
2
|
var newBoolean = require('../newBoolean');
|
|
2
3
|
var nullOperator = ' is ';
|
|
3
4
|
|
|
4
5
|
function endsWithCore(operator, column,arg,alias) {
|
|
6
|
+
alias = quote(alias);
|
|
5
7
|
operator = ' ' + operator + ' ';
|
|
6
8
|
var encoded = column.encode(arg);
|
|
7
9
|
if (encoded.sql() == 'null')
|
|
8
10
|
operator = nullOperator;
|
|
9
11
|
else
|
|
10
12
|
encoded = column.encode('%' + arg + '%');
|
|
11
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
13
|
+
var firstPart = alias + '.' + quote(column._dbName) + operator;
|
|
12
14
|
var filter = encoded.prepend(firstPart);
|
|
13
15
|
return newBoolean(filter);
|
|
14
16
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
const quote = require('../../quote');
|
|
1
2
|
var newBoolean = require('../newBoolean');
|
|
2
3
|
var nullOperator = ' is ';
|
|
3
4
|
|
|
4
5
|
function endsWithCore(operator, column,arg,alias) {
|
|
6
|
+
alias = quote(alias);
|
|
5
7
|
operator = ' ' + operator + ' ';
|
|
6
8
|
var encoded = column.encode(arg);
|
|
7
9
|
if (encoded.sql() == 'null')
|
|
8
10
|
operator = nullOperator;
|
|
9
11
|
else
|
|
10
12
|
encoded = column.encode('%' + arg);
|
|
11
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
13
|
+
var firstPart = alias + '.' + quote(column._dbName) + operator;
|
|
12
14
|
var filter = encoded.prepend(firstPart);
|
|
13
15
|
return newBoolean(filter);
|
|
14
16
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
var newBoolean = require('../newBoolean');
|
|
2
2
|
var nullOperator = ' is ';
|
|
3
3
|
var encodeFilterArg = require('../encodeFilterArg');
|
|
4
|
+
const quote = require('../../quote');
|
|
4
5
|
|
|
5
6
|
function iEqual(column,arg,alias) {
|
|
6
7
|
var operator = ' ILIKE ';
|
|
7
8
|
var encoded = encodeFilterArg(column, arg);
|
|
8
9
|
if (encoded.sql() == 'null')
|
|
9
10
|
operator = nullOperator;
|
|
10
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
11
|
+
var firstPart = alias + '.' + quote(column._dbName) + operator;
|
|
11
12
|
var filter = encoded.prepend(firstPart);
|
|
12
13
|
return newBoolean(filter);
|
|
13
14
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
var newBoolean = require('../newBoolean');
|
|
2
2
|
var nullOperator = ' is ';
|
|
3
|
+
var quote = require('../../quote');
|
|
3
4
|
|
|
4
5
|
function startsWithCore(operator, column,arg,alias) {
|
|
5
6
|
operator = ' ' + operator + ' ';
|
|
@@ -8,7 +9,7 @@ function startsWithCore(operator, column,arg,alias) {
|
|
|
8
9
|
operator = nullOperator;
|
|
9
10
|
else
|
|
10
11
|
encoded = column.encode(arg + '%');
|
|
11
|
-
var firstPart = alias + '.' + column._dbName + operator;
|
|
12
|
+
var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
|
|
12
13
|
var filter = encoded.prepend(firstPart);
|
|
13
14
|
return newBoolean(filter);
|
|
14
15
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
var newParameterized = require('../../../query/newParameterized');
|
|
2
2
|
var newBoolean = require('../../../column/newBoolean');
|
|
3
|
+
const quote = require('../../../quote');
|
|
3
4
|
|
|
4
5
|
function newSelectSql(table, alias) {
|
|
5
|
-
var colName = table._primaryColumns[0]._dbName;
|
|
6
|
-
|
|
6
|
+
var colName = quote(table._primaryColumns[0]._dbName);
|
|
7
|
+
alias = quote(alias);
|
|
8
|
+
var sql = 'SELECT ' + alias + '.' + colName + ' FROM ' + quote(table._dbName) + ' ' + alias;
|
|
7
9
|
sql = newParameterized(sql);
|
|
8
10
|
return newBoolean(sql);
|
|
9
11
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
let getSessionContext = require('../../getSessionContext');
|
|
2
|
+
let quote = require('../../quote');
|
|
2
3
|
|
|
3
4
|
function getSqlTemplate(_table, _row) {
|
|
4
5
|
let context = getSessionContext();
|
|
@@ -11,9 +12,8 @@ function getSqlTemplate(_table, _row) {
|
|
|
11
12
|
|
|
12
13
|
function getSqlTemplateDefault(table, row) {
|
|
13
14
|
let columnNames = [];
|
|
14
|
-
let regularColumnNames = [];
|
|
15
15
|
let values = [];
|
|
16
|
-
let sql = 'INSERT INTO ' + table._dbName + ' ';
|
|
16
|
+
let sql = 'INSERT INTO ' + quote(table._dbName) + ' ';
|
|
17
17
|
addDiscriminators();
|
|
18
18
|
addColumns();
|
|
19
19
|
if (columnNames.length === 0)
|
|
@@ -26,7 +26,7 @@ function getSqlTemplateDefault(table, row) {
|
|
|
26
26
|
let discriminators = table._columnDiscriminators;
|
|
27
27
|
for (let i = 0; i < discriminators.length; i++) {
|
|
28
28
|
let parts = discriminators[i].split('=');
|
|
29
|
-
columnNames.push(parts[0]);
|
|
29
|
+
columnNames.push(quote(parts[0]));
|
|
30
30
|
values.push(parts[1]);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -35,9 +35,8 @@ function getSqlTemplateDefault(table, row) {
|
|
|
35
35
|
let columns = table._columns;
|
|
36
36
|
for (let i = 0; i < columns.length; i++) {
|
|
37
37
|
let column = columns[i];
|
|
38
|
-
regularColumnNames.push(column._dbName);
|
|
39
38
|
if (row['__' + column.alias] !== undefined) {
|
|
40
|
-
columnNames.push(column._dbName);
|
|
39
|
+
columnNames.push(quote(column._dbName));
|
|
41
40
|
values.push('%s');
|
|
42
41
|
}
|
|
43
42
|
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const newParameterized = require('../query/newParameterized');
|
|
2
|
+
const getSessionContext = require('../getSessionContext');
|
|
3
|
+
const newDiscriminatorSql = require('../query/singleQuery/newDiscriminatorSql');
|
|
4
|
+
const quote = require('../quote');
|
|
3
5
|
|
|
4
6
|
function newGetLastInsertedCommandCore(table, row) {
|
|
5
7
|
let parameters = [];
|
|
6
8
|
let keyValues = table._primaryColumns.map(column => row['__' + column.alias]);
|
|
7
|
-
let sql = `SELECT ${columnNames()} FROM ${table._dbName} WHERE ${whereSql()}`;
|
|
9
|
+
let sql = `SELECT ${columnNames()} FROM ${quote(table._dbName)} WHERE ${whereSql()}`;
|
|
8
10
|
return newParameterized(sql, parameters);
|
|
9
11
|
|
|
10
12
|
function columnNames() {
|
|
11
|
-
return table._columns.map(col => col._dbName).join(',');
|
|
13
|
+
return table._columns.map(col => quote(col._dbName)).join(',');
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
function whereSql() {
|
|
@@ -35,7 +37,7 @@ function newGetLastInsertedCommandCore(table, row) {
|
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
function discriminators() {
|
|
38
|
-
return table.
|
|
40
|
+
return newDiscriminatorSql(table, table._dbName);
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
const getSessionSingleton = require('../getSessionSingleton');
|
|
1
2
|
var newParameterized = require('../query/newParameterized');
|
|
2
3
|
|
|
3
4
|
function newUpdateCommandCore(table, columns, row) {
|
|
4
|
-
|
|
5
|
+
const quote = getSessionSingleton('quote');
|
|
6
|
+
var command = newParameterized('UPDATE ' + quote(table._dbName) + ' SET');
|
|
5
7
|
var separator = ' ';
|
|
6
8
|
|
|
7
9
|
addColumns();
|
|
@@ -12,7 +14,7 @@ function newUpdateCommandCore(table, columns, row) {
|
|
|
12
14
|
for (var alias in columns) {
|
|
13
15
|
var column = columns[alias];
|
|
14
16
|
var encoded = column.encode(row[alias]);
|
|
15
|
-
command = command.append(separator + column._dbName + '=').append(encoded);
|
|
17
|
+
command = command.append(separator + quote(column._dbName) + '=').append(encoded);
|
|
16
18
|
separator = ',';
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -24,7 +26,7 @@ function newUpdateCommandCore(table, columns, row) {
|
|
|
24
26
|
var column = columns[i];
|
|
25
27
|
var value = row[column.alias];
|
|
26
28
|
var encoded = column.encode(value);
|
|
27
|
-
command = command.append(separator + column._dbName + '=').append(encoded);
|
|
29
|
+
command = command.append(separator + quote(column._dbName) + '=').append(encoded);
|
|
28
30
|
separator = ' AND ';
|
|
29
31
|
}
|
|
30
32
|
}
|
package/src/table/count.js
CHANGED
|
@@ -2,6 +2,7 @@ const executeQueries = require('./executeQueries');
|
|
|
2
2
|
const negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
|
|
3
3
|
const extractFilter = require('./query/extractFilter');
|
|
4
4
|
const newWhereSql = require('./query/singleQuery/newWhereSql');
|
|
5
|
+
const quote = require('./quote');
|
|
5
6
|
|
|
6
7
|
async function count(table, filter) {
|
|
7
8
|
let alias = table._dbName;
|
|
@@ -18,7 +19,8 @@ async function count(table, filter) {
|
|
|
18
19
|
|
|
19
20
|
function newQuery(table, filter, alias) {
|
|
20
21
|
filter = extractFilter(filter);
|
|
21
|
-
var name = table._dbName;
|
|
22
|
+
var name = quote(table._dbName);
|
|
23
|
+
alias = quote(alias);
|
|
22
24
|
var whereSql = newWhereSql(table, filter, alias);
|
|
23
25
|
|
|
24
26
|
return whereSql.prepend('select count(*) "_count" from ' + name + ' ' + alias);
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
const getSessionSingleton = require('../getSessionSingleton');
|
|
2
|
+
|
|
1
3
|
function extractOrderBy(table, alias, orderBy, originalOrderBy) {
|
|
4
|
+
const quote = getSessionSingleton('quote');
|
|
5
|
+
alias = quote(alias);
|
|
2
6
|
var dbNames = [];
|
|
3
7
|
var i;
|
|
4
8
|
if (orderBy) {
|
|
@@ -33,7 +37,7 @@ function extractOrderBy(table, alias, orderBy, originalOrderBy) {
|
|
|
33
37
|
var column = getTableColumn(property);
|
|
34
38
|
var jsonQuery = getJsonQuery(property, column.alias);
|
|
35
39
|
|
|
36
|
-
dbNames.push(alias + '.' + column._dbName + jsonQuery + direction);
|
|
40
|
+
dbNames.push(alias + '.' + quote(column._dbName) + jsonQuery + direction);
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
function getTableColumn(property) {
|