orange-orm 4.0.1 → 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.
Files changed (89) hide show
  1. package/docs/changelog.md +5 -2
  2. package/package.json +1 -1
  3. package/src/getManyDto/query/newSingleQuery.js +4 -3
  4. package/src/map.d.ts +19 -12
  5. package/src/mssql/newTransaction.js +1 -0
  6. package/src/mySql/deleteFromSql.js +3 -1
  7. package/src/mySql/insertSql.js +14 -7
  8. package/src/mySql/lastInsertedSql.js +4 -1
  9. package/src/mySql/newTransaction.js +1 -0
  10. package/src/oracle/deleteFromSql.js +3 -1
  11. package/src/oracle/formatDateOut.js +3 -1
  12. package/src/oracle/insertSql.js +8 -5
  13. package/src/oracle/mergeSql.js +15 -12
  14. package/src/oracle/newTransaction.js +1 -0
  15. package/src/oracle/selectForUpdateSql.js +3 -1
  16. package/src/pg/deleteFromSql.js +3 -1
  17. package/src/pg/formatDateOut.js +3 -1
  18. package/src/pg/insertSql.js +12 -7
  19. package/src/pg/lastInsertedSql.js +4 -1
  20. package/src/pg/newTransaction.js +1 -0
  21. package/src/pg/selectForUpdateSql.js +3 -1
  22. package/src/sap/deleteFromSql.js +3 -1
  23. package/src/sap/formatDateOut.js +3 -1
  24. package/src/sap/insertSql.js +6 -3
  25. package/src/sap/mergeSql.js +14 -11
  26. package/src/sap/newTransaction.js +1 -0
  27. package/src/sap/selectForUpdateSql.js +3 -1
  28. package/src/sqlite/deleteFromSql.js +3 -1
  29. package/src/sqlite/insertSql.js +11 -8
  30. package/src/sqlite/newTransaction.js +1 -0
  31. package/src/sqlite/selectForUpdateSql.js +3 -1
  32. package/src/table/column/date/formatOut.js +4 -1
  33. package/src/table/column/equal.js +2 -1
  34. package/src/table/column/extractAlias.js +2 -0
  35. package/src/table/column/greaterThan.js +2 -1
  36. package/src/table/column/greaterThanOrEqual.js +2 -1
  37. package/src/table/column/in.js +2 -1
  38. package/src/table/column/json/formatOut.js +2 -1
  39. package/src/table/column/lessThan.js +2 -1
  40. package/src/table/column/lessThanOrEqual.js +3 -1
  41. package/src/table/column/newColumn.js +6 -3
  42. package/src/table/column/notEqual.js +2 -1
  43. package/src/table/column/string/containsCore.js +3 -1
  44. package/src/table/column/string/endsWithCore.js +3 -1
  45. package/src/table/column/string/iEqual.js +2 -1
  46. package/src/table/column/string/startsWithCore.js +2 -1
  47. package/src/table/commands/delete/singleCommand/selectSql.js +4 -2
  48. package/src/table/commands/insert/getSqlTemplate.js +4 -5
  49. package/src/table/commands/newGetLastInsertedCommandCore.js +7 -5
  50. package/src/table/commands/newUpdateCommandCore.js +5 -3
  51. package/src/table/count.js +3 -1
  52. package/src/table/newRelatedTable.js +0 -1
  53. package/src/table/query/extractOrderBy.js +5 -1
  54. package/src/table/query/newSingleQuery.js +3 -2
  55. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +7 -3
  56. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +3 -1
  57. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +4 -1
  58. package/src/table/query/singleQuery/newDiscriminatorSql.js +6 -2
  59. package/src/table/quote.js +11 -0
  60. package/src/table/readStream/extractOrderBy.js +5 -1
  61. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +2 -1
  62. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +2 -1
  63. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +2 -1
  64. package/src/table/relatedTable/childColumn.js +10 -5
  65. package/src/table/relatedTable/columnAggregate.js +6 -2
  66. package/src/table/relatedTable/columnAggregateGroup.js +19 -13
  67. package/src/table/relatedTable/selectSql.js +7 -4
  68. package/src/table/relatedTable/whereSql.js +3 -0
  69. package/src/tedious/deleteFromSql.js +3 -1
  70. package/src/tedious/formatDateOut.js +3 -1
  71. package/src/tedious/formatJSONOut.js +1 -1
  72. package/src/tedious/getManyDto/query/newSingleQuery.js +1 -3
  73. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +6 -2
  74. package/src/tedious/insertSql.js +3 -5
  75. package/src/tedious/mergeSql.js +11 -12
  76. package/src/tedious/newTransaction.js +1 -0
  77. package/src/tedious/selectForUpdateSql.js +3 -1
  78. package/src/getManyDto/query/newColumnSql.js +0 -8
  79. package/src/getManyDto/query/singleQuery/newJoinedColumnSql.js +0 -25
  80. package/src/getManyDto/query/singleQuery/newShallowColumnSql.js +0 -25
  81. package/src/table/getManyDtoFast/getSubRows.js +0 -172
  82. package/src/table/getManyDtoFast/newQuery.js +0 -8
  83. package/src/table/getManyDtoFast/newQueryCore.js +0 -18
  84. package/src/table/getManyDtoFast/query/newSingleQuery.js +0 -20
  85. package/src/table/getManyDtoFast/query/newSubQueries/joinLegToQuery.js +0 -18
  86. package/src/table/getManyDtoFast/query/newSubQueries/manyLegToQuery.js +0 -20
  87. package/src/table/getManyDtoFast/query/newSubQueries/oneLegToQuery.js +0 -21
  88. package/src/table/getManyDtoFast/query/newSubQueries.js +0 -47
  89. package/src/table/getManyDtoFast/query/singleQuery/newShallowColumnSql.js +0 -21
@@ -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
- regularColumnNames.push(column._dbName);
55
+ const columnName = quote(column._dbName);
54
56
  if (row['__' + column.alias] !== undefined) {
55
- columnNames.push(column._dbName);
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.${column._dbName}=source.${column._dbName}`);
69
+ conflictColumnUpdates.push(`target.${columnName}=source.${columnName}`);
67
70
  else if (concurrency === 'optimistic')
68
- conflictColumnUpdates.push(`target.${column._dbName} = CASE WHEN target.${column._dbName} <> source.${column._dbName} THEN CAST('12345678-1234-1234-1234-123456789012Conflict when updating ${column._dbName}12345678-1234-1234-1234-123456789012' AS INTEGER) ELSE target.${column._dbName} END`);
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
  }
@@ -53,6 +53,7 @@ function newResolveTransaction(domain, pool) {
53
53
  caller.visitSap();
54
54
  };
55
55
  rdb.aggregateCount = 0;
56
+ rdb.quote = (name) => `[${name}]`;
56
57
  domain.rdb = rdb;
57
58
  onSuccess();
58
59
  } catch (e) {
@@ -1,3 +1,5 @@
1
+ const quote = require('../table/quote');
2
+
1
3
  module.exports = function(alias) {
2
- return ' FOR UPDATE OF ' + alias;
4
+ return ' FOR UPDATE OF ' + quote(alias);
3
5
  };
@@ -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;
@@ -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
- regularColumnNames.push(column._dbName);
43
+ const columnName = quote(column._dbName);
43
44
  if (row['__' + column.alias] !== undefined) {
44
- columnNames.push(column._dbName);
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(`${column._dbName}=excluded.${column._dbName}`);
60
+ conflictColumnUpdates.push(`${columnName}=excluded.${columnName}`);
58
61
  } else if (concurrency === 'optimistic')
59
- conflictColumnUpdates.push(`${column._dbName} = CASE WHEN ${table._dbName}.${column._dbName} <> excluded.${column._dbName} THEN '12345678-1234-1234-1234-123456789012Conflict when updating ${column._dbName}12345678-1234-1234-1234-123456789012' ELSE ${table._dbName}.${column._dbName} END`);
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
  }
@@ -42,6 +42,7 @@ function newResolveTransaction(domain, pool) {
42
42
  caller.visitSqlite();
43
43
  };
44
44
  rdb.aggregateCount = 0;
45
+ rdb.quote = (name) => `"${name}"`;
45
46
  domain.rdb = rdb;
46
47
  onSuccess();
47
48
  } catch (e) {
@@ -1,3 +1,5 @@
1
+ const quote = require('../table/quote');
2
+
1
3
  module.exports = function(alias) {
2
- return ' FOR UPDATE OF ' + alias;
4
+ return ' FOR UPDATE OF ' + quote(alias);
3
5
  };
@@ -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,6 +1,8 @@
1
1
  function extract(table, optionalAlias) {
2
+
2
3
  if (optionalAlias)
3
4
  return optionalAlias;
5
+ // return table._rootAlias || quote(table._dbName);
4
6
  return table._rootAlias || table._dbName;
5
7
  }
6
8
 
@@ -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
  }
@@ -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}.${c._dbName} ${alias}`,
84
+ expression: (alias) => `${tableAlias}.${columnName} ${quote(alias)}`,
82
85
  joins: [''],
83
86
  column: c,
84
- groupBy: `${tableAlias}.${c._dbName}`
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
- var sql = 'SELECT ' + alias + '.' + colName + ' FROM ' + table._dbName + ' ' + alias;
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
- let newParameterized = require('../query/newParameterized');
2
- let getSessionContext = require('../getSessionContext');
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._columnDiscriminators.join(',');
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
- var command = newParameterized('UPDATE ' + table._dbName + ' SET');
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
  }
@@ -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);
@@ -27,7 +27,6 @@ function newRelatedTable(relations, isShallow, depth = 0) {
27
27
  // @ts-ignore
28
28
  c.where = where(relations, depth);
29
29
 
30
- //todo
31
30
  // @ts-ignore
32
31
  c._aggregate = aggregate(relations);
33
32
 
@@ -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) {
@@ -4,16 +4,17 @@ var newWhereSql = require('./singleQuery/newWhereSql');
4
4
  var negotiateLimit = require('./singleQuery/negotiateLimit');
5
5
  var negotiateExclusive = require('./singleQuery/negotiateExclusive');
6
6
  var newParameterized = require('../../table/query/newParameterized');
7
+ var quote = require('../quote');
7
8
 
8
9
  function _new(table,filter,span,alias,innerJoin,orderBy,limit,offset,exclusive) {
9
10
 
10
- var name = table._dbName;
11
+ var name = quote(table._dbName);
11
12
  var columnSql = newColumnSql(table,span,alias);
12
13
  var joinSql = newJoinSql(span,alias);
13
14
  var whereSql = newWhereSql(table,filter,alias);
14
15
  var safeLimit = negotiateLimit(limit);
15
16
  var exclusiveClause = negotiateExclusive(table,alias,exclusive);
16
- return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + alias)
17
+ return newParameterized('select' + safeLimit + ' ' + columnSql + ' from ' + name + ' ' + quote(alias))
17
18
  .append(innerJoin)
18
19
  .append(joinSql)
19
20
  .append(whereSql)
@@ -1,4 +1,8 @@
1
+ const getSessionSingleton = require('../../../getSessionSingleton');
2
+
1
3
  function _new(table, alias, span, ignoreNulls) {
4
+ const quote = getSessionSingleton('quote');
5
+ const quotedAlias = quote(alias);
2
6
  let columnsMap = span.columns;
3
7
  var columns = table._columns;
4
8
  var sql = '';
@@ -7,11 +11,11 @@ function _new(table, alias, span, ignoreNulls) {
7
11
  for (let i = 0; i < columns.length; i++) {
8
12
  var column = columns[i];
9
13
  if (!columnsMap || (columnsMap.get(column))) {
10
- sql = sql + separator + formatColumn(column) + ' as s' + alias + i;
14
+ sql = sql + separator + formatColumn(column) + ' as ' + quote('s' + alias + i);
11
15
  separator = ',';
12
16
  }
13
17
  else if (!ignoreNulls) {
14
- sql = sql + separator + 'null as s' + alias + i;
18
+ sql = sql + separator + 'null as ' + quote('s' + alias + i);
15
19
  separator = ',';
16
20
  }
17
21
  }
@@ -24,7 +28,7 @@ function _new(table, alias, span, ignoreNulls) {
24
28
  return sql;
25
29
 
26
30
  function formatColumn(column) {
27
- const formatted = column.formatOut ? column.formatOut(alias) : alias + '.' + column._dbName;
31
+ const formatted = column.formatOut ? column.formatOut(quotedAlias) : quotedAlias + '.' + quote(column._dbName);
28
32
  if (column.dbNull === null)
29
33
  return formatted;
30
34
  else {
@@ -1,7 +1,9 @@
1
1
  var newJoinCore = require('./newShallowJoinSqlCore');
2
+ const getSessionSingleton = require('../../../getSessionSingleton');
2
3
 
3
4
  function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias, filter) {
4
- var sql = ' JOIN ' + rightTable._dbName + ' ' + rightAlias + ' ON (';
5
+ const quote = getSessionSingleton('quote');
6
+ var sql = ' JOIN ' + quote(rightTable._dbName) + ' ' + quote(rightAlias) + ' ON (';
5
7
  var joinCore = newJoinCore(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter);
6
8
  return joinCore.prepend(sql).append(')');
7
9
  }