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.
Files changed (93) hide show
  1. package/README.md +2 -2
  2. package/docs/changelog.md +6 -1
  3. package/package.json +2 -2
  4. package/src/ajv.d.ts +47 -0
  5. package/src/getManyDto/query/newSingleQuery.js +4 -3
  6. package/src/getTSDefinition.js +8 -4
  7. package/src/index.d.ts +5 -5
  8. package/src/map.d.ts +22 -14
  9. package/src/mssql/newTransaction.js +1 -0
  10. package/src/mySql/deleteFromSql.js +3 -1
  11. package/src/mySql/insertSql.js +14 -7
  12. package/src/mySql/lastInsertedSql.js +4 -1
  13. package/src/mySql/newTransaction.js +1 -0
  14. package/src/oracle/deleteFromSql.js +3 -1
  15. package/src/oracle/formatDateOut.js +3 -1
  16. package/src/oracle/insertSql.js +8 -5
  17. package/src/oracle/mergeSql.js +15 -12
  18. package/src/oracle/newTransaction.js +1 -0
  19. package/src/oracle/selectForUpdateSql.js +3 -1
  20. package/src/pg/deleteFromSql.js +3 -1
  21. package/src/pg/formatDateOut.js +3 -1
  22. package/src/pg/insertSql.js +12 -7
  23. package/src/pg/lastInsertedSql.js +4 -1
  24. package/src/pg/newTransaction.js +1 -0
  25. package/src/pg/selectForUpdateSql.js +3 -1
  26. package/src/sap/deleteFromSql.js +3 -1
  27. package/src/sap/formatDateOut.js +3 -1
  28. package/src/sap/insertSql.js +6 -3
  29. package/src/sap/mergeSql.js +14 -11
  30. package/src/sap/newTransaction.js +1 -0
  31. package/src/sap/selectForUpdateSql.js +3 -1
  32. package/src/sqlite/deleteFromSql.js +3 -1
  33. package/src/sqlite/insertSql.js +11 -8
  34. package/src/sqlite/newTransaction.js +1 -0
  35. package/src/sqlite/selectForUpdateSql.js +3 -1
  36. package/src/table/column/date/formatOut.js +4 -1
  37. package/src/table/column/equal.js +2 -1
  38. package/src/table/column/extractAlias.js +2 -0
  39. package/src/table/column/greaterThan.js +2 -1
  40. package/src/table/column/greaterThanOrEqual.js +2 -1
  41. package/src/table/column/in.js +2 -1
  42. package/src/table/column/json/formatOut.js +2 -1
  43. package/src/table/column/lessThan.js +2 -1
  44. package/src/table/column/lessThanOrEqual.js +3 -1
  45. package/src/table/column/newColumn.js +6 -3
  46. package/src/table/column/notEqual.js +2 -1
  47. package/src/table/column/string/containsCore.js +3 -1
  48. package/src/table/column/string/endsWithCore.js +3 -1
  49. package/src/table/column/string/iEqual.js +2 -1
  50. package/src/table/column/string/startsWithCore.js +2 -1
  51. package/src/table/commands/delete/singleCommand/selectSql.js +4 -2
  52. package/src/table/commands/insert/getSqlTemplate.js +4 -5
  53. package/src/table/commands/newGetLastInsertedCommandCore.js +7 -5
  54. package/src/table/commands/newUpdateCommandCore.js +5 -3
  55. package/src/table/count.js +3 -1
  56. package/src/table/newRelatedTable.js +0 -1
  57. package/src/table/query/extractOrderBy.js +5 -1
  58. package/src/table/query/newSingleQuery.js +3 -2
  59. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +7 -3
  60. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +3 -1
  61. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +4 -1
  62. package/src/table/query/singleQuery/newDiscriminatorSql.js +6 -2
  63. package/src/table/quote.js +11 -0
  64. package/src/table/readStream/extractOrderBy.js +5 -1
  65. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +2 -1
  66. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +2 -1
  67. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +2 -1
  68. package/src/table/relatedTable/childColumn.js +10 -5
  69. package/src/table/relatedTable/columnAggregate.js +6 -2
  70. package/src/table/relatedTable/columnAggregateGroup.js +19 -13
  71. package/src/table/relatedTable/selectSql.js +7 -4
  72. package/src/table/relatedTable/whereSql.js +3 -0
  73. package/src/tedious/deleteFromSql.js +3 -1
  74. package/src/tedious/formatDateOut.js +3 -1
  75. package/src/tedious/formatJSONOut.js +1 -1
  76. package/src/tedious/getManyDto/query/newSingleQuery.js +1 -3
  77. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +6 -2
  78. package/src/tedious/insertSql.js +3 -5
  79. package/src/tedious/mergeSql.js +11 -12
  80. package/src/tedious/newTransaction.js +1 -0
  81. package/src/tedious/selectForUpdateSql.js +3 -1
  82. package/src/getManyDto/query/newColumnSql.js +0 -8
  83. package/src/getManyDto/query/singleQuery/newJoinedColumnSql.js +0 -25
  84. package/src/getManyDto/query/singleQuery/newShallowColumnSql.js +0 -25
  85. package/src/table/getManyDtoFast/getSubRows.js +0 -172
  86. package/src/table/getManyDtoFast/newQuery.js +0 -8
  87. package/src/table/getManyDtoFast/newQueryCore.js +0 -18
  88. package/src/table/getManyDtoFast/query/newSingleQuery.js +0 -20
  89. package/src/table/getManyDtoFast/query/newSubQueries/joinLegToQuery.js +0 -18
  90. package/src/table/getManyDtoFast/query/newSubQueries/manyLegToQuery.js +0 -20
  91. package/src/table/getManyDtoFast/query/newSubQueries/oneLegToQuery.js +0 -21
  92. package/src/table/getManyDtoFast/query/newSubQueries.js +0 -47
  93. package/src/table/getManyDtoFast/query/singleQuery/newShallowColumnSql.js +0 -21
@@ -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
  }
@@ -1,7 +1,10 @@
1
1
  var newDiscriminatorSql = require('./newDiscriminatorSql');
2
2
  var newParameterized = require('../../newParameterized');
3
+ var quote = require('../../../quote');
3
4
 
4
5
  function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter) {
6
+ leftAlias = quote(leftAlias);
7
+ rightAlias = quote(rightAlias);
5
8
  var sql = '';
6
9
  var delimiter = '';
7
10
  for (var i = 0; i < leftColumns.length; i++) {
@@ -12,7 +15,7 @@ function _new(rightTable,leftColumns,rightColumns,leftAlias,rightAlias,filter) {
12
15
  function addColumn(index) {
13
16
  var leftColumn = leftColumns[index];
14
17
  var rightColumn = rightColumns[index];
15
- sql += delimiter + leftAlias + '.' + leftColumn._dbName + '=' + rightAlias + '.' + rightColumn._dbName;
18
+ sql += delimiter + leftAlias + '.' + quote(leftColumn._dbName) + '=' + rightAlias + '.' + quote(rightColumn._dbName);
16
19
  }
17
20
 
18
21
  sql += newDiscriminatorSql(rightTable,rightAlias);
@@ -1,4 +1,8 @@
1
+ const getSessionSingleton = require('../../getSessionSingleton');
2
+
1
3
  function newDiscriminatorSql(table, alias) {
4
+ const quote = getSessionSingleton('quote');
5
+ alias = quote(alias);
2
6
  var result = '';
3
7
  var formulaDiscriminators = table._formulaDiscriminators;
4
8
  var columnDiscriminators = table._columnDiscriminators;
@@ -16,9 +20,9 @@ function newDiscriminatorSql(table, alias) {
16
20
 
17
21
  function addColumn() {
18
22
  for (var i = 0; i< columnDiscriminators.length; i++) {
19
- var current = columnDiscriminators[i];
23
+ var current = columnDiscriminators[i].split('=');
20
24
  and();
21
- result += alias + '.' + current;
25
+ result += alias + '.' + quote(current[0]) + '=' + current[1];
22
26
  }
23
27
  }
24
28
 
@@ -0,0 +1,11 @@
1
+ let tryGetSessionContext = require('./tryGetSessionContext');
2
+
3
+ function quote(name) {
4
+ let context = tryGetSessionContext();
5
+ if (!context)
6
+ throw new Error('Rdb transaction is no longer available. Is promise chain broken ?');
7
+ let fn = context.quote || (() => `"${name}"`);
8
+ return fn(name);
9
+ }
10
+
11
+ module.exports = quote;
@@ -1,4 +1,8 @@
1
+ const getSessionSingleton = require('../getSessionSingleton');
2
+
1
3
  function extractOrderBy(alias, span) {
4
+ const quote = getSessionSingleton('quote');
5
+ alias = quote(alias);
2
6
  var table = span.table;
3
7
  var dbNames = [];
4
8
  var orderBy = span.orderBy;
@@ -32,7 +36,7 @@ function extractOrderBy(alias, span) {
32
36
  var column = getTableColumn(property);
33
37
  var jsonQuery = getJsonQuery(property, column.alias);
34
38
 
35
- dbNames.push(alias + '.' + column._dbName + jsonQuery + direction);
39
+ dbNames.push(alias + '.' + quote(column._dbName) + jsonQuery + direction);
36
40
  }
37
41
  function getTableColumn(property) {
38
42
  var column = table[property] || table[property.split(/(-|#)>+/g)[0]];
@@ -1,4 +1,5 @@
1
1
  var newShallowJoinSql = require('../../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
+ const quote = require('../../../../quote');
2
3
  var newQuery = require('./newQueryCore');
3
4
  var util = require('util');
4
5
 
@@ -13,7 +14,7 @@ function joinLegToQuery(parentAlias,leg,legNo) {
13
14
  var shallowJoin = newShallowJoinSql(parentTable,childColumns,parentColumns,childAlias,parentAlias);
14
15
  var query = newQuery(childTable,span,childAlias);
15
16
 
16
- return util.format(',\'%s\',(select %s from %s %s where %s)', leg.name, query.sql(), childTable._dbName, childAlias, shallowJoin);
17
+ return util.format(',\'%s\',(select %s from %s %s where %s)', leg.name, query.sql(), quote(childTable._dbName), quote(childAlias), shallowJoin);
17
18
  }
18
19
 
19
20
  module.exports = joinLegToQuery;
@@ -1,4 +1,5 @@
1
1
  var util = require('util');
2
+ const quote = require('../../../../quote');
2
3
 
3
4
  function _new(table,alias) {
4
5
  var columnFormat = '\'%s\',%s.%s';
@@ -8,7 +9,7 @@ function _new(table,alias) {
8
9
  for (var i = 0; i < columns.length; i++) {
9
10
  var column = columns[i];
10
11
  if (!('serializable' in column && !column.serializable))
11
- sql = sql + separator + util.format(columnFormat, column.alias, alias, column._dbName);
12
+ sql = sql + separator + util.format(columnFormat, quote(column.alias), alias, quote(column._dbName));
12
13
  separator = ',';
13
14
  }
14
15
  return sql;
@@ -1,4 +1,5 @@
1
1
  var util = require('util');
2
+ const quote = require('../../../../quote');
2
3
 
3
4
  function _new(table,alias,span) {
4
5
  let columnsMap = span.columns;
@@ -9,7 +10,7 @@ function _new(table,alias,span) {
9
10
  for (var i = 0; i < columns.length; i++) {
10
11
  var column = columns[i];
11
12
  if (!('serializable' in column && !column.serializable) && (!columnsMap || (columnsMap.get(column)))) {
12
- sql = sql + separator + util.format(columnFormat, column._dbName, column.alias);
13
+ sql = sql + separator + util.format(columnFormat, quote(column._dbName), quote(column.alias));
13
14
  separator = ',' + alias + '.';
14
15
  }
15
16
  }
@@ -1,23 +1,28 @@
1
1
  var newJoin = require('./joinSql');
2
2
  var getSessionContext = require('../getSessionContext');
3
3
  var newJoinCore = require('../query/singleQuery/joinSql/newShallowJoinSqlCore');
4
+ const getSessionSingleton = require('../getSessionSingleton');
5
+ const _quote = require('../quote');
6
+
4
7
 
5
8
  function childColumn(column, relations) {
9
+ const quote = getSessionSingleton('quote');
6
10
  const context = getSessionContext();
7
11
  const outerAlias = 'y' + context.aggregateCount++;
12
+ const outerAliasQuoted = quote(outerAlias);
8
13
  const alias = 'x' + relations.length;
9
14
  const foreignKeys = getForeignKeys(relations[0]);
10
- const select = ` LEFT JOIN (SELECT ${foreignKeys},${alias}.${column._dbName} as prop`;
15
+ const select = ` LEFT JOIN (SELECT ${foreignKeys},${alias}.${quote(column._dbName)} as prop`;
11
16
  const innerJoin = relations.length > 1 ? newJoin(relations).sql() : '';
12
17
  const onClause = createOnClause(relations[0], outerAlias);
13
- const from = ` FROM ${relations.at(-1).childTable._dbName} ${alias} ${innerJoin}) ${outerAlias} ON (${onClause})`;
18
+ const from = ` FROM ${quote(relations.at(-1).childTable._dbName)} ${alias} ${innerJoin}) ${outerAliasQuoted} ON (${onClause})`;
14
19
  const join = select + from ;
15
20
 
16
21
  return {
17
- expression: (alias) => `${outerAlias}.prop ${alias}`,
22
+ expression: (alias) => `${outerAliasQuoted}.prop ${quote(alias)}`,
18
23
  joins: [join],
19
24
  column,
20
- groupBy: `${outerAlias}.prop`,
25
+ groupBy: `${outerAliasQuoted}.prop`,
21
26
  };
22
27
  }
23
28
 
@@ -55,7 +60,7 @@ function getForeignKeys(relation) {
55
60
  columns = relation.joinRelation.columns;
56
61
  else
57
62
  columns = relation.childTable._primaryColumns;
58
- return columns.map(x => `${alias}.${x._dbName}`).join(',');
63
+ return columns.map(x => `${alias}.${_quote(x._dbName)}`).join(',');
59
64
  }
60
65
 
61
66
  module.exports = childColumn;
@@ -1,13 +1,17 @@
1
+ const getSessionSingleton = require('../getSessionSingleton');
1
2
  var newJoinArray = require('./joinSqlArray');
2
3
 
3
4
  function columnAggregate(operator, column, relations, coalesce = true) {
5
+ const quote = getSessionSingleton('quote');
4
6
 
5
- const tableAlias = relations.reduce((prev,relation) => {
7
+ let tableAlias = relations.reduce((prev,relation) => {
6
8
  return prev + relation.toLeg().name;
7
9
  }, 'z');
10
+ tableAlias = quote(tableAlias);
11
+ const columnName = quote(column._dbName);
8
12
 
9
13
  return {
10
- expression: (alias) => coalesce ? `COALESCE(${operator}(${tableAlias}.${column._dbName}), 0) as ${alias}` : `${operator}(${tableAlias}.${column._dbName}) as ${alias}`,
14
+ expression: (alias) => coalesce ? `COALESCE(${operator}(${tableAlias}.${columnName}), 0) as ${quote(alias)}` : `${operator}(${tableAlias}.${columnName}) as ${alias}`,
11
15
 
12
16
  joins: newJoinArray(relations)
13
17
  };
@@ -1,22 +1,35 @@
1
1
  var newJoin = require('./joinSql');
2
2
  var getSessionContext = require('../getSessionContext');
3
3
  var newJoinCore = require('../query/singleQuery/joinSql/newShallowJoinSqlCore');
4
+ const getSessionSingleton = require('../getSessionSingleton');
4
5
 
5
6
  function columnAggregate(operator, column, relations, coalesce = true) {
7
+ const quote = getSessionSingleton('quote');
6
8
  const context = getSessionContext();
7
9
  const outerAlias = 'y' + context.aggregateCount++;
8
- const alias = 'x' + relations.length;
10
+ const outerAliasQuoted = quote(outerAlias);
11
+ const alias = quote('x' + relations.length);
9
12
  const foreignKeys = getForeignKeys(relations[0]);
10
- const select = ` LEFT JOIN (SELECT ${foreignKeys},${operator}(${alias}.${column._dbName}) as amount`;
13
+ const select = ` LEFT JOIN (SELECT ${foreignKeys},${operator}(${alias}.${quote(column._dbName)}) as amount`;
11
14
  const innerJoin = relations.length > 1 ? newJoin(relations).sql() : '';
12
15
  const onClause = createOnClause(relations[0], outerAlias);
13
- const from = ` FROM ${relations.at(-1).childTable._dbName} ${alias} ${innerJoin} GROUP BY ${foreignKeys}) ${outerAlias} ON (${onClause})`;
16
+ const from = ` FROM ${quote(relations.at(-1).childTable._dbName)} ${alias} ${innerJoin} GROUP BY ${foreignKeys}) ${outerAliasQuoted} ON (${onClause})`;
14
17
  const join = select + from ;
15
18
 
16
19
  return {
17
- expression: (alias) => coalesce? `COALESCE(${outerAlias}.amount, 0) as ${alias}` : `${outerAlias}.amount as ${alias}`,
20
+ expression: (alias) => coalesce? `COALESCE(${outerAliasQuoted}.amount, 0) as ${quote(alias)}` : `${outerAliasQuoted}.amount as ${alias}`,
18
21
  joins: [join]
19
22
  };
23
+
24
+ function getForeignKeys(relation) {
25
+ let columns;
26
+ let alias = quote('x1');
27
+ if (relation.joinRelation)
28
+ columns = relation.joinRelation.columns;
29
+ else
30
+ columns = relation.childTable._primaryColumns;
31
+ return columns.map(x => `${alias}.${quote(x._dbName)}`).join(',');
32
+ }
20
33
  }
21
34
 
22
35
  function createOnClause(relation, rightAlias) {
@@ -42,18 +55,11 @@ function createOnClause(relation, rightAlias) {
42
55
 
43
56
  sql = newJoinCore(childTable,parentTable._primaryColumns,columns,leftAlias, rightAlias).sql();
44
57
  }
58
+
45
59
  relation.accept(c);
46
60
  return sql;
47
61
  }
48
62
 
49
- function getForeignKeys(relation) {
50
- let columns;
51
- let alias = 'x1';
52
- if (relation.joinRelation)
53
- columns = relation.joinRelation.columns;
54
- else
55
- columns = relation.childTable._primaryColumns;
56
- return columns.map(x => `${alias}.${x._dbName}`).join(',');
57
- }
63
+
58
64
 
59
65
  module.exports = columnAggregate;
@@ -1,11 +1,14 @@
1
1
  var newParameterized = require('../query/newParameterized');
2
2
  var newBoolean = require('../column/newBoolean');
3
+ const getSessionSingleton = require('../getSessionSingleton');
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;
7
- sql = newParameterized(sql);
8
- return newBoolean(sql);
6
+ const quote = getSessionSingleton('quote');
7
+ const quotedAlias = quote(alias);
8
+ const colName = quote(table._primaryColumns[0]._dbName);
9
+ const sql = 'SELECT ' + quotedAlias + '.' + colName + ' FROM ' + quote(table._dbName) + ' ' + quotedAlias;
10
+ const sqlp = newParameterized(sql);
11
+ return newBoolean(sqlp);
9
12
  }
10
13
 
11
14
  module.exports = newSelectSql;
@@ -7,6 +7,8 @@ function newWhereSql(relations, shallowFilter, depth = 0) {
7
7
 
8
8
  c.visitJoin = function(relation) {
9
9
  var table = relation.childTable;
10
+
11
+ //todo fix discriminators
10
12
  var alias = depth === 0 ? (relation.parentTable._rootAlias || relation.parentTable._dbName) : 'x' + depth;
11
13
  var leftColumns = relation.columns;
12
14
  var rightColumns = table._primaryColumns;
@@ -18,6 +20,7 @@ function newWhereSql(relations, shallowFilter, depth = 0) {
18
20
  var rightColumns = joinRelation.columns;
19
21
  var childTable = joinRelation.childTable;
20
22
  var leftColumns = childTable._primaryColumns;
23
+ //todo fix discriminators
21
24
  var alias = depth === 0 ? (childTable._rootAlias || childTable._dbName) : 'x' + depth;
22
25
  where(alias, leftColumns, rightColumns);
23
26
  };
@@ -1,8 +1,10 @@
1
1
  var format = 'delete %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, alias, name, alias, whereSql);
7
9
  }
8
10
  module.exports = deleteFromSql;
@@ -1,5 +1,7 @@
1
+ const quote = require('../table/quote');
2
+
1
3
  function formatDateOut(column, alias) {
2
- return `CONVERT(VARCHAR, ${alias}.${column._dbName}, 121)`;
4
+ return `CONVERT(VARCHAR, ${alias}.${quote(column._dbName)}, 121)`;
3
5
  }
4
6
 
5
7
  module.exports = formatDateOut;
@@ -1,5 +1,5 @@
1
1
  function formatJSONOut(column, alias) {
2
- return `JSON_QUERY(${alias}.${column._dbName})`;
2
+ return `JSON_QUERY(${alias}.[${column._dbName}])`;
3
3
  }
4
4
 
5
5
  module.exports = formatJSONOut;
@@ -3,8 +3,6 @@ var newWhereSql = require('../../../table/query/singleQuery/newWhereSql');
3
3
  var newParameterized = require('../../../table/query/newParameterized');
4
4
 
5
5
  function _new(table, filter, span, alias, subQueries, orderBy, limit, offset) {
6
-
7
- var name = table._dbName;
8
6
  var columnSql = newColumnSql(table, alias, span);
9
7
  var whereSql = newWhereSql(table, filter, alias);
10
8
  if (limit)
@@ -23,7 +21,7 @@ function _new(table, filter, span, alias, subQueries, orderBy, limit, offset) {
23
21
  }
24
22
 
25
23
 
26
- return newParameterized('select ' + limit + columnSql).append(subQueries).append(' from ' + name + ' ' + alias + join).append(whereSql).append(orderBy + offset);
24
+ return newParameterized('select ' + limit + columnSql).append(subQueries).append(' from ' + `[${table._dbName}] [${alias}]` + join).append(whereSql).append(orderBy + offset);
27
25
  }
28
26
 
29
27
  module.exports = _new;
@@ -1,4 +1,8 @@
1
+ const getSessionSingleton = require('../../../../table/getSessionSingleton');
2
+
1
3
  function _new(table,alias, span) {
4
+ const quote = getSessionSingleton('quote');
5
+ alias = quote(alias);
2
6
  let columnsMap = span.columns;
3
7
  var columns = table._columns;
4
8
  var sql = '';
@@ -7,7 +11,7 @@ function _new(table,alias, span) {
7
11
  for (var 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 ' + column.alias;
14
+ sql = sql + separator + formatColumn(column) + ' as ' + quote(column.alias);
11
15
  separator = ',';
12
16
  }
13
17
  }
@@ -20,7 +24,7 @@ function _new(table,alias, span) {
20
24
 
21
25
  function formatColumn(column) {
22
26
 
23
- const formatted = column.formatOut && column.tsType !== 'DateColumn' ? column.formatOut(alias) : alias + '.' + column._dbName;
27
+ const formatted = column.formatOut && column.tsType !== 'DateColumn' ? column.formatOut(alias) : alias + '.' + quote(column._dbName);
24
28
  if (column.dbNull === null)
25
29
  return formatted;
26
30
  else {
@@ -27,9 +27,8 @@ function hasConcurrency(table,options) {
27
27
 
28
28
  function insertSql(table, row) {
29
29
  let columnNames = [];
30
- let regularColumnNames = [];
31
30
  let values = [];
32
- let sql = 'INSERT INTO ' + table._dbName + ' ';
31
+ let sql = `INSERT INTO [${table._dbName}] `;
33
32
  addDiscriminators();
34
33
  addColumns();
35
34
  if (columnNames.length === 0)
@@ -42,7 +41,7 @@ function insertSql(table, row) {
42
41
  let discriminators = table._columnDiscriminators;
43
42
  for (let i = 0; i < discriminators.length; i++) {
44
43
  let parts = discriminators[i].split('=');
45
- columnNames.push(parts[0]);
44
+ columnNames.push(`[${parts[0]}]`);
46
45
  values.push(parts[1]);
47
46
  }
48
47
  }
@@ -51,9 +50,8 @@ function insertSql(table, row) {
51
50
  let columns = table._columns;
52
51
  for (let i = 0; i < columns.length; i++) {
53
52
  let column = columns[i];
54
- regularColumnNames.push(column._dbName);
55
53
  if (row['__' + column.alias] !== undefined) {
56
- columnNames.push(column._dbName);
54
+ columnNames.push(`[${column._dbName}]`);
57
55
  values.push('%s');
58
56
  }
59
57
  }
@@ -1,8 +1,8 @@
1
1
  const outputInsertedSql = require('./outputInsertedSql');
2
2
 
3
3
  function insertSql(table, row, options) {
4
+
4
5
  let columnNames = [];
5
- let regularColumnNames = [];
6
6
  let conflictColumnUpdateSql = '';
7
7
  let values = [];
8
8
  addDiscriminators();
@@ -11,18 +11,18 @@ function insertSql(table, row, options) {
11
11
  const matched = whenMatched();
12
12
  let sql;
13
13
  if (matched)
14
- sql = `MERGE INTO ${table._dbName} AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN MATCHED THEN ${matched} WHEN NOT MATCHED THEN ${whenNotMatched()} ${outputInsertedSql(table)};`;
14
+ sql = `MERGE INTO [${table._dbName}] AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN MATCHED THEN ${matched} WHEN NOT MATCHED THEN ${whenNotMatched()} ${outputInsertedSql(table)};`;
15
15
  else
16
- sql = `MERGE INTO ${table._dbName} AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN NOT MATCHED THEN ${whenNotMatched()} ${outputInsertedSql(table)};`;
16
+ sql = `MERGE INTO [${table._dbName}] AS target USING (SELECT ${values.join(',')}) AS source ON ${join()} WHEN NOT MATCHED THEN ${whenNotMatched()} ${outputInsertedSql(table)};`;
17
17
  return sql;
18
18
 
19
19
  function join() {
20
20
  const discriminators = table._columnDiscriminators.map(x => {
21
- const name = x.split('=')[0];
21
+ const name = `[${x.split('=')[0]}]`;
22
22
 
23
23
  return `target.${name}=source.${name}`;
24
24
  });
25
- const primaries = table._primaryColumns.map(x => `target.${x._dbName}=source.${x._dbName}`);
25
+ const primaries = table._primaryColumns.map(x => `target.[${x._dbName}]=source.[${x._dbName}]`);
26
26
  return [...discriminators, ...primaries].join(' AND ');
27
27
  }
28
28
 
@@ -41,8 +41,8 @@ function insertSql(table, row, options) {
41
41
  let discriminators = table._columnDiscriminators;
42
42
  for (let i = 0; i < discriminators.length; i++) {
43
43
  let parts = discriminators[i].split('=');
44
- columnNames.push(parts[0]);
45
- values.push(`${parts[1]} AS ${parts[0]}`);
44
+ columnNames.push(`[${parts[0]}]`);
45
+ values.push(`${parts[1]} AS ${[parts[0]]}`);
46
46
  }
47
47
  }
48
48
 
@@ -51,10 +51,9 @@ function insertSql(table, row, options) {
51
51
  let columns = table._columns;
52
52
  for (let i = 0; i < columns.length; i++) {
53
53
  let column = columns[i];
54
- regularColumnNames.push(column._dbName);
55
54
  if (row['__' + column.alias] !== undefined) {
56
- columnNames.push(column._dbName);
57
- values.push(`%s AS ${column.alias}`);
55
+ columnNames.push(`[${column._dbName}]`);
56
+ values.push(`%s AS [${column.alias}]`);
58
57
  addConflictUpdate(column);
59
58
  }
60
59
  }
@@ -66,9 +65,9 @@ function insertSql(table, row, options) {
66
65
  function addConflictUpdate(column) {
67
66
  let concurrency = options[column.alias]?.concurrency || options.concurrency;
68
67
  if (concurrency === 'overwrite')
69
- conflictColumnUpdates.push(`target.${column._dbName}=source.${column._dbName}`);
68
+ conflictColumnUpdates.push(`target.[${column._dbName}]=source.[${column._dbName}]`);
70
69
  else if (concurrency === 'optimistic')
71
- 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`);
70
+ 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`);
72
71
  }
73
72
  }
74
73
  }
@@ -57,6 +57,7 @@ function newResolveTransaction(domain, pool) {
57
57
  caller.visitSqlite();
58
58
  };
59
59
  rdb.aggregateCount = 0;
60
+ rdb.quote = (name) => `[${name}]`;
60
61
  domain.rdb = rdb;
61
62
  onSuccess();
62
63
  } 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 +0,0 @@
1
- var newShallowColumnSql = require('./singleQuery/newShallowColumnSql');
2
- var newJoinedColumnSql = require('./singleQuery/newJoinedColumnSql');
3
-
4
- module.exports = function(table,span,alias) {
5
- var shallowColumnSql = newShallowColumnSql(table,alias, span);
6
- var joinedColumnSql = newJoinedColumnSql(span,alias);
7
- return shallowColumnSql + joinedColumnSql;
8
- };
@@ -1,25 +0,0 @@
1
- var util = require('util');
2
- //todo delete
3
- function _new(table,alias,span) {
4
- let columnsMap = span.columns;
5
- var columnFormat = '%s as "%s"';
6
- var columns = table._columns;
7
- var sql = '';
8
- var separator = '';
9
- for (var i = 0; i < columns.length; i++) {
10
- var column = columns[i];
11
- if (!columnsMap || (columnsMap.get(column))) {
12
- if (column.dbNull === null)
13
- sql = sql + separator + alias + '.' + util.format(columnFormat, column._dbName, column.alias);
14
- else {
15
- const encoded = column.encode.unsafe(column.dbNull);
16
- sql = sql + separator + `CASE WHEN ${alias}.${column._dbName}=${encoded} THEN null ELSE ${alias}.${column._dbName} END as ${column.alias}`;
17
- }
18
- separator = ',';
19
- }
20
- }
21
-
22
- return sql;
23
- }
24
-
25
- module.exports = _new;
@@ -1,25 +0,0 @@
1
- var util = require('util');
2
- //todo delete
3
- function _new(table,alias,span) {
4
- let columnsMap = span.columns;
5
- var columnFormat = '%s as "%s"';
6
- var columns = table._columns;
7
- var sql = '';
8
- var separator = '';
9
- for (var i = 0; i < columns.length; i++) {
10
- var column = columns[i];
11
- if (!columnsMap || (columnsMap.get(column))) {
12
- if (column.dbNull === null)
13
- sql = sql + separator + alias + '.' + util.format(columnFormat, column._dbName, column.alias);
14
- else {
15
- const encoded = column.encode.unsafe(column.dbNull);
16
- sql = sql + separator + `CASE WHEN ${alias}.${column._dbName}=${encoded} THEN null ELSE ${alias}.${column._dbName} END as ${column.alias}`;
17
- }
18
- separator = ',';
19
- }
20
- }
21
-
22
- return sql;
23
- }
24
-
25
- module.exports = _new;