orange-orm 4.4.2 → 4.5.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/README.md +1 -1
  2. package/package.json +12 -6
  3. package/src/client/clientMap.js +2 -0
  4. package/src/client/createProviders.js +12 -0
  5. package/src/client/index.js +6 -3
  6. package/src/client/index.mjs +8 -3
  7. package/src/client/map.js +1 -0
  8. package/src/createDomain.js +11 -16
  9. package/src/d1/newDatabase.js +119 -0
  10. package/src/d1/newPool.js +19 -0
  11. package/src/d1/newTransaction.js +82 -0
  12. package/src/d1/pool/end.js +13 -0
  13. package/src/d1/pool/newGenericPool.js +53 -0
  14. package/src/d1/wrapQuery.js +22 -0
  15. package/src/d1test.js +35 -0
  16. package/src/emitEvent.js +6 -4
  17. package/src/emptyFilter.js +12 -12
  18. package/src/getManyDto/newQuery.js +5 -5
  19. package/src/getManyDto/query/newSingleQuery.js +5 -5
  20. package/src/getManyDto.js +25 -24
  21. package/src/hostExpress/cycle.ts +211 -0
  22. package/src/hostExpress/executePath.js +360 -357
  23. package/src/hostLocal.js +8 -8
  24. package/src/index.d.ts +2 -0
  25. package/src/index.js +19 -15
  26. package/src/map.d.ts +3 -0
  27. package/src/mssql/newDatabase.js +19 -31
  28. package/src/mssql/newPool.js +2 -2
  29. package/src/mssql/newTransaction.js +5 -4
  30. package/src/mssql/pool/newGenericPool.js +1 -1
  31. package/src/mySql/deleteFromSql.js +1 -1
  32. package/src/mySql/insert.js +5 -5
  33. package/src/mySql/insertSql.js +2 -3
  34. package/src/mySql/lastInsertedSql.js +3 -4
  35. package/src/mySql/newDatabase.js +20 -34
  36. package/src/mySql/newPool.js +10 -10
  37. package/src/mySql/newTransaction.js +3 -3
  38. package/src/mySql/pool/newGenericPool.js +2 -3
  39. package/src/mySql/quote.js +1 -0
  40. package/src/newImmutable.js +1 -2
  41. package/src/oracle/deleteFromSql.js +1 -1
  42. package/src/oracle/formatDateOut.js +1 -1
  43. package/src/oracle/insert.js +6 -6
  44. package/src/oracle/insertSql.js +6 -14
  45. package/src/oracle/lastInsertedSql.js +3 -3
  46. package/src/oracle/mergeSql.js +3 -6
  47. package/src/oracle/newDatabase.js +18 -33
  48. package/src/oracle/newInsertCommandCore.js +3 -3
  49. package/src/oracle/newPool.js +10 -10
  50. package/src/oracle/newTransaction.js +3 -2
  51. package/src/oracle/pool/newGenericPool.js +2 -2
  52. package/src/oracle/quote.js +1 -0
  53. package/src/oracle/wrapQuery.js +0 -3
  54. package/src/patchRow.js +2 -2
  55. package/src/patchTable.js +6 -5
  56. package/src/pg/deleteFromSql.js +1 -1
  57. package/src/pg/formatDateOut.js +1 -2
  58. package/src/pg/insert.js +3 -3
  59. package/src/pg/insertSql.js +2 -7
  60. package/src/pg/lastInsertedSql.js +1 -2
  61. package/src/pg/newDatabase.js +20 -37
  62. package/src/pg/newPool.js +10 -10
  63. package/src/pg/newTransaction.js +3 -2
  64. package/src/pg/pool/newPgPool.js +2 -2
  65. package/src/pg/quote.js +2 -0
  66. package/src/pg/schema.js +2 -2
  67. package/src/{mySql/pool/defaults.js → poolDefaults.js} +0 -2
  68. package/src/query.js +2 -2
  69. package/src/sap/deleteFromSql.js +1 -1
  70. package/src/sap/formatDateOut.js +1 -1
  71. package/src/sap/insert.js +5 -5
  72. package/src/sap/insertSql.js +4 -5
  73. package/src/sap/lastInsertedSql.js +3 -3
  74. package/src/sap/mergeSql.js +1 -2
  75. package/src/sap/newDatabase.js +23 -34
  76. package/src/sap/newPool.js +2 -2
  77. package/src/sap/newTransaction.js +3 -2
  78. package/src/sap/quote.js +1 -0
  79. package/src/sqlite/deleteFromSql.js +1 -1
  80. package/src/sqlite/insert.js +5 -5
  81. package/src/sqlite/insertSql.js +2 -2
  82. package/src/sqlite/lastInsertedSql.js +2 -2
  83. package/src/sqlite/newDatabase.js +16 -32
  84. package/src/sqlite/newPool.js +10 -10
  85. package/src/sqlite/newTransaction.js +3 -2
  86. package/src/sqlite/pool/newGenericPool.js +2 -1
  87. package/src/sqlite/quote.js +1 -0
  88. package/src/table/aggregate.js +1 -1
  89. package/src/table/begin.js +5 -5
  90. package/src/table/cascadeDelete.js +2 -2
  91. package/src/table/column/binary/newDecode.js +2 -2
  92. package/src/table/column/binary/newEncode.js +3 -4
  93. package/src/table/column/boolean/newDecode.js +1 -1
  94. package/src/table/column/boolean/newEncode.js +6 -6
  95. package/src/table/column/date/formatOut.js +3 -5
  96. package/src/table/column/date/newDecode.js +2 -2
  97. package/src/table/column/date/newEncode.js +8 -8
  98. package/src/table/column/date.js +1 -1
  99. package/src/table/column/dateWithTimeZone/newEncode.js +3 -4
  100. package/src/table/column/dateWithTimeZone.js +1 -1
  101. package/src/table/column/encodeFilterArg.js +3 -3
  102. package/src/table/column/equal.js +3 -3
  103. package/src/table/column/extractAlias.js +0 -2
  104. package/src/table/column/greaterThan.js +3 -3
  105. package/src/table/column/greaterThanOrEqual.js +3 -3
  106. package/src/table/column/guid/newDecode.js +1 -1
  107. package/src/table/column/guid/newEncode.js +3 -3
  108. package/src/table/column/in.js +3 -3
  109. package/src/table/column/json/formatOut.js +3 -3
  110. package/src/table/column/json/newDecode.js +3 -3
  111. package/src/table/column/json/newEncode.js +6 -6
  112. package/src/table/column/json.js +2 -1
  113. package/src/table/column/lessThan.js +3 -3
  114. package/src/table/column/lessThanOrEqual.js +4 -4
  115. package/src/table/column/negotiateRawSqlFilter.js +9 -9
  116. package/src/table/column/newBoolean.js +9 -9
  117. package/src/table/column/newColumn.js +21 -21
  118. package/src/table/column/newDecodeCore.js +1 -1
  119. package/src/table/column/notEqual.js +3 -3
  120. package/src/table/column/numeric/newDecode.js +2 -2
  121. package/src/table/column/numeric/newEncode.js +3 -3
  122. package/src/table/column/string/contains.js +2 -1
  123. package/src/table/column/string/containsCore.js +5 -5
  124. package/src/table/column/string/endsWith.js +1 -1
  125. package/src/table/column/string/endsWithCore.js +4 -4
  126. package/src/table/column/string/iContains.js +2 -1
  127. package/src/table/column/string/iEndsWith.js +1 -1
  128. package/src/table/column/string/iEqual.js +3 -3
  129. package/src/table/column/string/iStartsWith.js +1 -1
  130. package/src/table/column/string/newEncode.js +3 -3
  131. package/src/table/column/string/startsWith.js +1 -1
  132. package/src/table/column/string/startsWithCore.js +4 -4
  133. package/src/table/column/string.js +14 -14
  134. package/src/table/commands/beginCommand.js +2 -2
  135. package/src/table/commands/compressChanges.js +2 -2
  136. package/src/table/commands/delete/newSingleCommand.js +5 -5
  137. package/src/table/commands/delete/singleCommand/joinSql.js +12 -12
  138. package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +2 -2
  139. package/src/table/commands/delete/singleCommand/selectSql.js +6 -6
  140. package/src/table/commands/delete/singleCommand/subFilter.js +11 -11
  141. package/src/table/commands/delete/singleCommand/whereSql.js +2 -2
  142. package/src/table/commands/getChangeSet.js +2 -2
  143. package/src/table/commands/insert/getSqlTemplate.js +16 -16
  144. package/src/table/commands/lastCommandMatches.js +2 -2
  145. package/src/table/commands/newDeleteCommand.js +5 -5
  146. package/src/table/commands/newGetLastInsertedCommand.js +4 -4
  147. package/src/table/commands/newGetLastInsertedCommandCore.js +5 -5
  148. package/src/table/commands/newInsertCommand.js +0 -1
  149. package/src/table/commands/newInsertCommandCore.js +3 -3
  150. package/src/table/commands/newRow.js +4 -4
  151. package/src/table/commands/newUpdateCommand.js +4 -4
  152. package/src/table/commands/newUpdateCommandCore.js +4 -4
  153. package/src/table/commands/pushCommand.js +2 -2
  154. package/src/table/commit.js +13 -11
  155. package/src/table/count.js +8 -8
  156. package/src/table/delete.js +4 -4
  157. package/src/table/deleteSessionContext.js +4 -13
  158. package/src/table/executeQueries/executeChanges.js +3 -3
  159. package/src/table/executeQueries/executeQueriesCore.js +2 -2
  160. package/src/table/executeQueries/executeQuery.js +2 -2
  161. package/src/table/executeQueries/resolveExecuteQuery.js +4 -4
  162. package/src/table/executeQueries.js +4 -4
  163. package/src/table/getFromDbById.js +1 -1
  164. package/src/table/getMany.js +7 -7
  165. package/src/table/getManyDto.js +3 -4
  166. package/src/table/getSessionContext.js +4 -4
  167. package/src/table/getSessionSingleton.js +3 -2
  168. package/src/table/groupBy/newQuery.js +4 -4
  169. package/src/table/groupBy.js +9 -9
  170. package/src/table/insert.js +10 -13
  171. package/src/table/joinRelation/getRelatives.js +6 -6
  172. package/src/table/newGetRelated.js +3 -3
  173. package/src/table/newManyRelation.js +9 -9
  174. package/src/table/newOneRelation.js +9 -9
  175. package/src/table/newPrimaryKeyFilter.js +6 -6
  176. package/src/table/newQuery.js +5 -5
  177. package/src/table/newRelatedTable.js +2 -2
  178. package/src/table/newRowCache.js +17 -17
  179. package/src/table/newThrow.js +2 -2
  180. package/src/table/oneRelation/getRelatives.js +5 -5
  181. package/src/table/popChanges.js +3 -3
  182. package/src/table/promise.js +2 -8
  183. package/src/table/query/extractLimit.js +2 -2
  184. package/src/table/query/extractOffset.js +2 -2
  185. package/src/table/query/extractOrderBy.js +2 -2
  186. package/src/table/query/newSingleQuery.js +7 -7
  187. package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +5 -5
  188. package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -2
  189. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +4 -4
  190. package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +2 -2
  191. package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +2 -2
  192. package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +2 -2
  193. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +5 -5
  194. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +6 -5
  195. package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +2 -2
  196. package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +2 -2
  197. package/src/table/query/singleQuery/negotiateExclusive.js +2 -2
  198. package/src/table/query/singleQuery/newColumnSql.js +3 -3
  199. package/src/table/query/singleQuery/newDiscriminatorSql.js +2 -2
  200. package/src/table/query/singleQuery/newJoinSql.js +6 -6
  201. package/src/table/query/singleQuery/newWhereSql.js +3 -3
  202. package/src/table/quote.js +4 -4
  203. package/src/table/relatedTable/aggregate.js +2 -2
  204. package/src/table/relatedTable/all.js +5 -5
  205. package/src/table/relatedTable/any.js +3 -3
  206. package/src/table/relatedTable/childColumn.js +12 -12
  207. package/src/table/relatedTable/columnAggregate.js +3 -3
  208. package/src/table/relatedTable/columnAggregateGroup.js +11 -11
  209. package/src/table/relatedTable/joinSql.js +5 -5
  210. package/src/table/relatedTable/joinSqlArray.js +3 -3
  211. package/src/table/relatedTable/none.js +3 -3
  212. package/src/table/relatedTable/relatedColumn.js +13 -13
  213. package/src/table/relatedTable/selectSql.js +2 -2
  214. package/src/table/relatedTable/subFilter.js +4 -4
  215. package/src/table/relatedTable/where.js +3 -3
  216. package/src/table/relatedTable/whereSql.js +2 -2
  217. package/src/table/relation/manyCache/synchronizeAdded.js +2 -2
  218. package/src/table/relation/manyCache/synchronizeChanged.js +3 -3
  219. package/src/table/relation/manyCache/synchronizeRemoved.js +2 -2
  220. package/src/table/relation/newForeignKeyFilter.js +2 -2
  221. package/src/table/relation/newManyCache.js +16 -16
  222. package/src/table/relation/newOneCache.js +6 -6
  223. package/src/table/releaseDbClient.js +4 -4
  224. package/src/table/resultToPromise.js +1 -3
  225. package/src/table/resultToRows/dbRowToRow.js +8 -8
  226. package/src/table/resultToRows/dbRowsToRows.js +2 -2
  227. package/src/table/resultToRows/decodeDbRow.js +2 -2
  228. package/src/table/resultToRows/delete/removeFromCache.js +6 -6
  229. package/src/table/resultToRows/delete.js +6 -6
  230. package/src/table/resultToRows/newDecodeDbRow.js +19 -18
  231. package/src/table/resultToRows/toDto.js +3 -3
  232. package/src/table/resultToRows.js +3 -3
  233. package/src/table/rollback.js +21 -11
  234. package/src/table/rowArray/negotiateNextTick.js +1 -2
  235. package/src/table/setSessionSingleton.js +6 -3
  236. package/src/table/tryGetFirstFromDb.js +4 -4
  237. package/src/table/tryGetFromCacheById.js +3 -3
  238. package/src/table/tryGetFromDbById/extractStrategy.js +2 -2
  239. package/src/table/tryGetFromDbById.js +8 -6
  240. package/src/table/tryGetSessionContext.js +5 -10
  241. package/src/table/tryReleaseDbClient.js +2 -2
  242. package/src/table/updateField.js +4 -4
  243. package/src/table/where.js +2 -2
  244. package/src/table.js +58 -51
  245. package/src/tedious/deleteFromSql.js +1 -1
  246. package/src/tedious/formatDateOut.js +1 -1
  247. package/src/tedious/getManyDto/newQueryCore.js +5 -5
  248. package/src/tedious/getManyDto/query/newSingleQuery.js +5 -5
  249. package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +3 -3
  250. package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +3 -3
  251. package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +4 -4
  252. package/src/tedious/getManyDto/query/newSubQueries.js +8 -8
  253. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +5 -6
  254. package/src/tedious/getManyDto.js +6 -6
  255. package/src/tedious/insert.js +3 -3
  256. package/src/tedious/insertSql.js +3 -3
  257. package/src/tedious/newDatabase.js +17 -30
  258. package/src/tedious/newPool.js +10 -10
  259. package/src/tedious/newTransaction.js +4 -5
  260. package/src/tedious/pool/newGenericPool.js +1 -1
  261. package/src/tedious/quote.js +1 -0
  262. package/src/mssql/pool/defaults.js +0 -45
  263. package/src/oracle/pool/defaults.js +0 -45
  264. package/src/pg/pool/defaults.js +0 -45
  265. package/src/sqlite/pool/defaults.js +0 -45
  266. package/src/tedious/pool/defaults.js +0 -45
@@ -3,7 +3,7 @@ var purify = require('./purify');
3
3
 
4
4
  function _new(column) {
5
5
 
6
- var encode = function(value) {
6
+ var encode = function(_context, value) {
7
7
  value = purify(value);
8
8
  if (value == null) {
9
9
  if (column.dbNull === null)
@@ -13,7 +13,7 @@ function _new(column) {
13
13
  return newPara('?', [value]);
14
14
  };
15
15
 
16
- encode.unsafe = function(value) {
16
+ encode.unsafe = function(_context, value) {
17
17
  value = purify(value);
18
18
  if (value == null) {
19
19
  if (column.dbNull === null)
@@ -23,7 +23,7 @@ function _new(column) {
23
23
  return '\'' + value + '\'';
24
24
  };
25
25
 
26
- encode.direct = function(value) {
26
+ encode.direct = function(_context, value) {
27
27
  return value ;
28
28
  };
29
29
 
@@ -1,3 +1,3 @@
1
1
  var startsWithCore = require('./startsWithCore');
2
2
 
3
- module.exports = startsWithCore.bind(null, 'LIKE');
3
+ module.exports = (context, ...rest) => startsWithCore.apply(null, [context, 'LIKE', ...rest]);
@@ -2,14 +2,14 @@ var newBoolean = require('../newBoolean');
2
2
  var nullOperator = ' is ';
3
3
  var quote = require('../../quote');
4
4
 
5
- function startsWithCore(operator, column,arg,alias) {
5
+ function startsWithCore(context, operator, column,arg,alias) {
6
6
  operator = ' ' + operator + ' ';
7
- var encoded = column.encode(arg);
7
+ var encoded = column.encode(context, arg);
8
8
  if (encoded.sql() == 'null')
9
9
  operator = nullOperator;
10
10
  else
11
- encoded = column.encode(arg + '%');
12
- var firstPart = quote(alias) + '.' + quote(column._dbName) + operator;
11
+ encoded = column.encode(context, arg + '%');
12
+ var firstPart = quote(context, alias) + '.' + quote(context, column._dbName) + operator;
13
13
  var filter = encoded.prepend(firstPart);
14
14
  return newBoolean(filter);
15
15
  }
@@ -17,34 +17,34 @@ function _new(table, column) {
17
17
  column.decode = newDecode(column);
18
18
  var extractAlias = _extractAlias.bind(null, table);
19
19
 
20
- column.startsWith = function(arg, alias) {
20
+ column.startsWith = function(context, arg, alias) {
21
21
  alias = extractAlias(alias);
22
- return startsWith(column, arg, alias);
22
+ return startsWith(context, column, arg, alias);
23
23
  };
24
- column.endsWith = function(arg, alias) {
24
+ column.endsWith = function(context, arg, alias) {
25
25
  alias = extractAlias(alias);
26
- return endsWith(column, arg, alias);
26
+ return endsWith(context, column, arg, alias);
27
27
  };
28
- column.contains = function(arg, alias) {
28
+ column.contains = function(context, arg, alias) {
29
29
  alias = extractAlias(alias);
30
- return contains(column, arg, alias);
30
+ return contains(context, column, arg, alias);
31
31
  };
32
- column.iStartsWith = function(arg, alias) {
32
+ column.iStartsWith = function(context, arg, alias) {
33
33
  alias = extractAlias(alias);
34
- return iStartsWith(column, arg, alias);
34
+ return iStartsWith(context, column, arg, alias);
35
35
  };
36
- column.iEndsWith = function(arg, alias) {
36
+ column.iEndsWith = function(context, arg, alias) {
37
37
  alias = extractAlias(alias);
38
- return iEndsWith(column, arg, alias);
38
+ return iEndsWith(context, column, arg, alias);
39
39
  };
40
- column.iContains = function(arg, alias) {
40
+ column.iContains = function(context, arg, alias) {
41
41
  alias = extractAlias(alias);
42
- return iContains(column, arg, alias);
42
+ return iContains(context, column, arg, alias);
43
43
  };
44
44
 
45
- column.iEqual = function(arg, alias) {
45
+ column.iEqual = function(context, arg, alias) {
46
46
  alias = extractAlias(alias);
47
- return iEqual(column, arg, alias);
47
+ return iEqual(context, column, arg, alias);
48
48
  };
49
49
 
50
50
  column.iEq = column.iEqual;
@@ -1,8 +1,8 @@
1
1
  let newParameterized = require('../query/newParameterized');
2
2
  let getSessionContext = require('../getSessionContext');
3
3
 
4
- module.exports = function() {
5
- let command = newParameterized(getSessionContext().begin || 'BEGIN');
4
+ module.exports = function(context) {
5
+ let command = newParameterized(getSessionContext(context).begin || 'BEGIN');
6
6
  command.endEdit = empty;
7
7
  command.matches = empty;
8
8
 
@@ -1,8 +1,8 @@
1
1
  var newParameterized = require('../query/newParameterized');
2
2
  var getSessionSingleton = require('../getSessionSingleton');
3
3
 
4
- function compress(queries) {
5
- var multipleStatements = getSessionSingleton('multipleStatements');
4
+ function compress(context, queries) {
5
+ var multipleStatements = getSessionSingleton(context, 'multipleStatements');
6
6
  var compressed = [];
7
7
  var queryCount = queries.length;
8
8
 
@@ -4,14 +4,14 @@ var extractFilter = require('../../query/extractFilter');
4
4
  var newSingleCommandCore = require('./singleCommand/newSingleCommandCore');
5
5
  var createAlias = require('./createAlias');
6
6
 
7
- function _new(table,filter,relations) {
7
+ function _new(context, table, filter, relations) {
8
8
  var alias = createAlias(table, relations.length);
9
9
  filter = extractFilter(filter);
10
- filter = newSubFilter(relations, filter);
11
- var discriminator = newDiscriminatorSql(table, alias);
10
+ filter = newSubFilter(context, relations, filter);
11
+ var discriminator = newDiscriminatorSql(context, table, alias);
12
12
  if (discriminator !== '')
13
- filter = filter.and(discriminator);
14
- return newSingleCommandCore(table, filter, alias);
13
+ filter = filter.and(context, discriminator);
14
+ return newSingleCommandCore(context, table, filter, alias);
15
15
  }
16
16
 
17
17
  module.exports = _new;
@@ -1,21 +1,21 @@
1
- var newShallowJoinSql = require('../../../query/singleQuery/joinSql/newShallowJoinSql');
2
- var createAlias = require('../createAlias');
1
+ const newShallowJoinSql = require('../../../query/singleQuery/joinSql/newShallowJoinSql');
2
+ const createAlias = require('../createAlias');
3
3
 
4
- function newJoinSql(relations) {
5
- var length = relations.length;
6
- var leftAlias,
4
+ function newJoinSql(context, relations) {
5
+ const length = relations.length;
6
+ let leftAlias,
7
7
  rightAlias;
8
- var sql = '';
8
+ let sql = '';
9
9
 
10
10
  function addSql(relation) {
11
- var rightColumns = relation.childTable._primaryColumns;
12
- var leftColumns = relation.columns;
13
- sql += ' INNER' + newShallowJoinSql(relation.childTable,leftColumns,rightColumns,leftAlias,rightAlias).sql();
11
+ const rightColumns = relation.childTable._primaryColumns;
12
+ const leftColumns = relation.columns;
13
+ sql += ' INNER' + newShallowJoinSql(context, relation.childTable, leftColumns, rightColumns, leftAlias, rightAlias).sql();
14
14
  }
15
15
 
16
- relations.forEach(function(relation, i){
17
- leftAlias = 'x' + (length-i);
18
- rightAlias = createAlias(relation.childTable, length-i-1);
16
+ relations.forEach(function(relation, i) {
17
+ leftAlias = 'x' + (length - i);
18
+ rightAlias = createAlias(relation.childTable, length - i - 1);
19
19
  addSql(relation);
20
20
 
21
21
  });
@@ -1,13 +1,13 @@
1
1
  var getSessionSingleton = require('../../../getSessionSingleton');
2
2
 
3
- function newSingleCommandCore(table,filter,alias) {
3
+ function newSingleCommandCore(context, table, filter, alias) {
4
4
  var c = {};
5
5
 
6
6
  c.sql = function() {
7
7
  var whereSql = filter.sql();
8
8
  if (whereSql)
9
9
  whereSql = ' where ' + whereSql;
10
- var deleteFromSql = getSessionSingleton('deleteFromSql');
10
+ var deleteFromSql = getSessionSingleton(context, 'deleteFromSql');
11
11
  return deleteFromSql(table, alias, whereSql);
12
12
  };
13
13
 
@@ -1,11 +1,11 @@
1
- var newParameterized = require('../../../query/newParameterized');
2
- var newBoolean = require('../../../column/newBoolean');
1
+ const newParameterized = require('../../../query/newParameterized');
2
+ const newBoolean = require('../../../column/newBoolean');
3
3
  const quote = require('../../../quote');
4
4
 
5
- function newSelectSql(table, alias) {
6
- var colName = quote(table._primaryColumns[0]._dbName);
7
- alias = quote(alias);
8
- var sql = 'SELECT ' + alias + '.' + colName + ' FROM ' + quote(table._dbName) + ' ' + alias;
5
+ function newSelectSql(context, table, alias) {
6
+ const colName = quote(context, table._primaryColumns[0]._dbName);
7
+ alias = quote(context, alias);
8
+ let sql = 'SELECT ' + alias + '.' + colName + ' FROM ' + quote(context, table._dbName) + ' ' + alias;
9
9
  sql = newParameterized(sql);
10
10
  return newBoolean(sql);
11
11
  }
@@ -1,17 +1,17 @@
1
- var newSelect = require('./selectSql');
2
- var newJoin = require('./joinSql');
3
- var newWhere = require('./whereSql');
4
- var createAlias = require('../createAlias');
1
+ const newSelect = require('./selectSql');
2
+ const newJoin = require('./joinSql');
3
+ const newWhere = require('./whereSql');
4
+ const createAlias = require('../createAlias');
5
5
 
6
- function newSubFilter(relations, shallowFilter) {
7
- var relationCount = relations.length;
6
+ function newSubFilter(context,relations, shallowFilter) {
7
+ const relationCount = relations.length;
8
8
  if (relationCount === 0)
9
9
  return shallowFilter;
10
- var table = relations[0].childTable;
11
- var alias = createAlias(table, relationCount -1);
12
- var filter = newSelect(table,alias).prepend('EXISTS (');
13
- var join = newJoin(relations.slice(1));
14
- var where = newWhere(relations,shallowFilter,alias);
10
+ const table = relations[0].childTable;
11
+ const alias = createAlias(table, relationCount -1);
12
+ const filter = newSelect(context,table,alias).prepend('EXISTS (');
13
+ const join = newJoin(context, relations.slice(1));
14
+ const where = newWhere(context,relations,shallowFilter,alias);
15
15
  return filter.append(join).append(where).append(')');
16
16
 
17
17
  }
@@ -1,6 +1,6 @@
1
1
  var newShallowJoinSql = require('../../../query/singleQuery/joinSql/newShallowJoinSqlCore');
2
2
 
3
- function newWhereSql(relations, shallowFilter, rightAlias) {
3
+ function newWhereSql(context, relations, shallowFilter, rightAlias) {
4
4
  var sql;
5
5
  var relationCount = relations.length;
6
6
  var relation = relations[0];
@@ -12,7 +12,7 @@ function newWhereSql(relations, shallowFilter, rightAlias) {
12
12
 
13
13
  function where() {
14
14
  var table = relation.childTable;
15
- var joinCore = newShallowJoinSql(table, leftColumns, rightColumns, leftAlias, rightAlias);
15
+ var joinCore = newShallowJoinSql(context, table, leftColumns, rightColumns, leftAlias, rightAlias);
16
16
  if (shallowFilter.sql())
17
17
  sql = shallowFilter.prepend(' AND ').prepend(joinCore).prepend(' WHERE ');
18
18
  else
@@ -1,6 +1,6 @@
1
1
  var getSessionSingleton = require('../getSessionSingleton');
2
- function getChangeSet() {
3
- return getSessionSingleton('changes');
2
+ function getChangeSet(context) {
3
+ return getSessionSingleton(context, 'changes');
4
4
  }
5
5
 
6
6
  module.exports = getChangeSet;
@@ -1,19 +1,19 @@
1
1
  let getSessionContext = require('../../getSessionContext');
2
2
  let quote = require('../../quote');
3
3
 
4
- function getSqlTemplate(_table, _row) {
5
- let context = getSessionContext();
6
- if (context.insertSql)
7
- return context.insertSql.apply(null, arguments);
4
+ function getSqlTemplate(context, _table, _row) {
5
+ let rdb = getSessionContext(context);
6
+ if (rdb.insertSql)
7
+ return rdb.insertSql.apply(null, arguments);
8
8
  else
9
9
  return getSqlTemplateDefault.apply(null, arguments);
10
10
 
11
11
  }
12
12
 
13
- function getSqlTemplateDefault(table, row) {
13
+ function getSqlTemplateDefault(context, table, row) {
14
14
  let columnNames = [];
15
15
  let values = [];
16
- let sql = 'INSERT INTO ' + quote(table._dbName) + ' ';
16
+ let sql = 'INSERT INTO ' + quote(context, 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(quote(parts[0]));
29
+ columnNames.push(quote(context, parts[0]));
30
30
  values.push(parts[1]);
31
31
  }
32
32
  }
@@ -36,29 +36,29 @@ function getSqlTemplateDefault(table, row) {
36
36
  for (let i = 0; i < columns.length; i++) {
37
37
  let column = columns[i];
38
38
  if (row['__' + column.alias] !== undefined) {
39
- columnNames.push(quote(column._dbName));
39
+ columnNames.push(quote(context, column._dbName));
40
40
  values.push('%s');
41
41
  }
42
42
  }
43
43
  }
44
44
 
45
45
  function lastInserted() {
46
- let context = getSessionContext();
47
- if (!context.lastInsertedIsSeparate && context.lastInsertedSql)
48
- return ' ' + context.lastInsertedSql(table);
46
+ let rdb = getSessionContext(context);
47
+ if (!rdb.lastInsertedIsSeparate && rdb.lastInsertedSql)
48
+ return ' ' + rdb.lastInsertedSql(table);
49
49
  return '';
50
50
  }
51
51
 
52
52
  function outputInserted() {
53
- let context = getSessionContext();
54
- if (!context.lastInsertedIsSeparate && context.outputInsertedSql)
55
- return ' ' + context.outputInsertedSql(table) + ' ';
53
+ let rdb = getSessionContext(context);
54
+ if (!rdb.lastInsertedIsSeparate && rdb.outputInsertedSql)
55
+ return ' ' + rdb.outputInsertedSql(table) + ' ';
56
56
  return '';
57
57
  }
58
58
 
59
59
  function defaultValues() {
60
- let context = getSessionContext();
61
- let _default = context.insertDefault || 'DEFAULT VALUES';
60
+ let rdb = getSessionContext(context);
61
+ let _default = rdb.insertDefault || 'DEFAULT VALUES';
62
62
  return `${_default}${lastInserted()}`;
63
63
 
64
64
  }
@@ -1,7 +1,7 @@
1
1
  var getChangeSet = require('./getChangeSet');
2
2
 
3
- function lastCommandMatches(row) {
4
- var changeSet = getChangeSet();
3
+ function lastCommandMatches(context, row) {
4
+ var changeSet = getChangeSet(context);
5
5
  var lastIndex = changeSet.length-1;
6
6
  if (lastIndex >= 0 && changeSet[lastIndex].matches)
7
7
  return changeSet[lastIndex].matches(row);
@@ -5,16 +5,16 @@ var nextCommand = function() {
5
5
  nextCommand.apply(null, arguments);
6
6
  };
7
7
 
8
- function newCommand(queries,table,filter,strategy,relations) {
9
- var singleCommand = newSingleCommand(table,filter,relations);
10
- for(var name in strategy) {
8
+ function newCommand(context, queries, table, filter, strategy, relations) {
9
+ var singleCommand = newSingleCommand(context, table, filter, relations);
10
+ for (var name in strategy) {
11
11
  if (!(strategy[name] === null || strategy[name]))
12
12
  continue;
13
13
  var childStrategy = strategy[name];
14
14
  var childRelation = table._relations[name];
15
15
  var joinRelation = childRelation.joinRelation;
16
- var childRelations = [joinRelation].concat(relations);
17
- nextCommand(queries,childRelation.childTable,filter,childStrategy,childRelations);
16
+ var childRelations = [joinRelation].concat(relations);
17
+ nextCommand(context, queries, childRelation.childTable, filter, childStrategy, childRelations);
18
18
  }
19
19
  queries.push(singleCommand);
20
20
  return queries;
@@ -1,15 +1,15 @@
1
1
  var newGetLastInsertedCommandCore = require('./newGetLastInsertedCommandCore');
2
2
  var newImmutable = require('../../newImmutable');
3
3
 
4
- function newGetLastInsertedCommand(table, row, insertCommand) {
5
- let cmd = new InsertCommand(table, row, insertCommand);
4
+ function newGetLastInsertedCommand(context, table, row, insertCommand) {
5
+ let cmd = new InsertCommand(context, table, row, insertCommand);
6
6
  insertCommand.endEdit = () => {};
7
7
  return cmd;
8
8
  }
9
9
 
10
- function InsertCommand(table, row, insertCommand) {
10
+ function InsertCommand(context, table, row, insertCommand) {
11
11
  this._insertCommand = insertCommand;
12
- this.__getCoreCommand = newImmutable(newGetLastInsertedCommandCore);
12
+ this.__getCoreCommand = newImmutable(newGetLastInsertedCommandCore.bind(null, context));
13
13
  this._table = table;
14
14
  this._row = row;
15
15
  }
@@ -3,19 +3,19 @@ const getSessionContext = require('../getSessionContext');
3
3
  const newDiscriminatorSql = require('../query/singleQuery/newDiscriminatorSql');
4
4
  const quote = require('../quote');
5
5
 
6
- function newGetLastInsertedCommandCore(table, row) {
6
+ function newGetLastInsertedCommandCore(context, table, row) {
7
7
  let parameters = [];
8
8
  let keyValues = table._primaryColumns.map(column => row['__' + column.alias]);
9
- let sql = `SELECT ${columnNames()} FROM ${quote(table._dbName)} WHERE ${whereSql()}`;
9
+ let sql = `SELECT ${columnNames()} FROM ${quote(context, table._dbName)} WHERE ${whereSql()}`;
10
10
  return newParameterized(sql, parameters);
11
11
 
12
12
  function columnNames() {
13
- return table._columns.map(col => quote(col._dbName)).join(',');
13
+ return table._columns.map(col => quote(context, col._dbName)).join(',');
14
14
  }
15
15
 
16
16
  function whereSql() {
17
17
  let parameterized;
18
- let filter = getSessionContext().lastInsertedSql(table, keyValues);
18
+ let filter = getSessionContext(context).lastInsertedSql(context, table, keyValues);
19
19
  if (Array.isArray(filter)) {
20
20
  for (let i = 0; i < filter.length; i++) {
21
21
  const sep = i === 0 ? '' : ' AND ';
@@ -37,7 +37,7 @@ function newGetLastInsertedCommandCore(table, row) {
37
37
  }
38
38
 
39
39
  function discriminators() {
40
- return newDiscriminatorSql(table, table._dbName);
40
+ return newDiscriminatorSql(context, table, table._dbName);
41
41
  }
42
42
  }
43
43
 
@@ -1,4 +1,3 @@
1
- // var newInsertCommandCore = require('./newInsertCommandCore');
2
1
  var newImmutable = require('../../newImmutable');
3
2
  var createPatch = require('../../client/createPatch');
4
3
  var createDto = require('../resultToRows/toDto/createDto');
@@ -2,16 +2,16 @@ var newParameterized = require('../query/newParameterized');
2
2
  var getSqlTemplate = require('./insert/getSqlTemplate');
3
3
  var util = require('util');
4
4
 
5
- function newInsertCommandCore(table, row, options = {}) {
5
+ function newInsertCommandCore(context, table, row, options = {}) {
6
6
  var parameters = [];
7
- var values = [getSqlTemplate(table, row, options)];
7
+ var values = [getSqlTemplate(context, table, row, options)];
8
8
 
9
9
  var columns = table._columns;
10
10
  for (var i = 0; i < columns.length; i++) {
11
11
  var column = columns[i];
12
12
  var alias = column.alias;
13
13
  if (row['__' + column.alias] !== undefined) {
14
- var encoded = column.encode(row[alias]);
14
+ var encoded = column.encode(context, row[alias]);
15
15
  if (encoded.parameters.length > 0) {
16
16
  values.push('?');
17
17
  parameters.push(encoded.parameters[0]);
@@ -1,7 +1,7 @@
1
1
  var decodeDbRow = require('../resultToRows/decodeDbRow');
2
2
  var flags = require('../../flags');
3
3
 
4
- function newRow({table, _options}) {
4
+ function newRow(context, {table, _options}) {
5
5
  var dto = {};
6
6
  table._columns.forEach(addColumn);
7
7
 
@@ -28,20 +28,20 @@ function newRow({table, _options}) {
28
28
  else
29
29
  dto[alias] = undefined;
30
30
  }
31
- const arg = arguments[1];
31
+ const arg = arguments[2];
32
32
  if (isObject(arg))
33
33
  for (let name in arg) {
34
34
  if (table[name] && table[name].equal)
35
35
  dto[name] = arg[name];
36
36
  }
37
37
  else
38
- for (var i = 1; i < arguments.length; i++) {
38
+ for (var i = 2; i < arguments.length; i++) {
39
39
  var pkValue = arguments[i];
40
40
  var column = table._primaryColumns[i - 1];
41
41
  dto[column.alias] = pkValue;
42
42
  }
43
43
 
44
- return decodeDbRow(table, table, dto, true, true);
44
+ return decodeDbRow(context, table, table, dto, true, true);
45
45
  }
46
46
 
47
47
  function isObject(object) {
@@ -4,14 +4,14 @@ let newColumnList = require('../../newObject');
4
4
  var createPatch = require('../../client/createPatch');
5
5
  let createDto = require('../resultToRows/toDto/createDto');
6
6
 
7
- function newUpdateCommand(table, column, row) {
8
- return new UpdateCommand(table, column, row);
7
+ function newUpdateCommand(context, table, column, row) {
8
+ return new UpdateCommand(context, table, column, row);
9
9
  }
10
10
 
11
- function UpdateCommand(table, column, row) {
11
+ function UpdateCommand(context, table, column, row) {
12
12
  this._table = table;
13
13
  this._row = row;
14
- this.__getCoreCommand = newImmutable(newUpdateCommandCore);
14
+ this.__getCoreCommand = newImmutable(newUpdateCommandCore.bind(null, context));
15
15
  this._columnList = newColumnList();
16
16
  this._columnList[column.alias] = column;
17
17
  this.onFieldChanged = this.onFieldChanged.bind(this);
@@ -1,8 +1,8 @@
1
1
  const getSessionSingleton = require('../getSessionSingleton');
2
2
  var newParameterized = require('../query/newParameterized');
3
3
 
4
- function newUpdateCommandCore(table, columns, row) {
5
- const quote = getSessionSingleton('quote');
4
+ function newUpdateCommandCore(context, table, columns, row) {
5
+ const quote = getSessionSingleton(context, 'quote');
6
6
  var command = newParameterized('UPDATE ' + quote(table._dbName) + ' SET');
7
7
  var separator = ' ';
8
8
 
@@ -13,7 +13,7 @@ function newUpdateCommandCore(table, columns, row) {
13
13
  function addColumns() {
14
14
  for (var alias in columns) {
15
15
  var column = columns[alias];
16
- var encoded = column.encode(row[alias]);
16
+ var encoded = column.encode(context, row[alias]);
17
17
  command = command.append(separator + quote(column._dbName) + '=').append(encoded);
18
18
  separator = ',';
19
19
  }
@@ -25,7 +25,7 @@ function newUpdateCommandCore(table, columns, row) {
25
25
  for (var i = 0; i < columns.length; i++) {
26
26
  var column = columns[i];
27
27
  var value = row[column.alias];
28
- var encoded = column.encode(value);
28
+ var encoded = column.encode(context, value);
29
29
  command = command.append(separator + quote(column._dbName) + '=').append(encoded);
30
30
  separator = ' AND ';
31
31
  }
@@ -1,8 +1,8 @@
1
1
  var getChangeSet = require('./getChangeSet');
2
2
  var negotiateEndEdit = require('./negotiateEndEdit');
3
3
 
4
- function pushCommand(command) {
5
- var changes = getChangeSet();
4
+ function pushCommand(context, command) {
5
+ var changes = getChangeSet(context);
6
6
  negotiateEndEdit(changes);
7
7
  changes.push(command);
8
8
  }
@@ -5,9 +5,9 @@ let releaseDbClient = require('./releaseDbClient');
5
5
  let popChanges = require('./popChanges');
6
6
  const getSessionSingleton = require('./getSessionSingleton');
7
7
 
8
- function commit(result) {
8
+ function _commit(context, result) {
9
9
  return popAndPushChanges()
10
- .then(releaseDbClient)
10
+ .then(releaseDbClient.bind(null, context))
11
11
  .then(onReleased);
12
12
 
13
13
  function onReleased() {
@@ -15,18 +15,20 @@ function commit(result) {
15
15
  }
16
16
 
17
17
  async function popAndPushChanges() {
18
- let changes = popChanges();
18
+ let changes = popChanges(context);
19
19
  while (changes.length > 0) {
20
- await executeChanges(changes);
21
- changes = popChanges();
20
+ await executeChanges(context, changes);
21
+ changes = popChanges(context);
22
22
  }
23
- if (!getSessionSingleton('readonly'))
24
- pushCommand(commitCommand);
25
- return executeChanges(popChanges());
23
+ if (!getSessionSingleton(context, 'transactionLess'))
24
+ pushCommand(context, commitCommand);
25
+ return executeChanges(context, popChanges(context));
26
26
  }
27
27
  }
28
28
 
29
- module.exports = function(result) {
29
+ function commit(context, result) {
30
30
  return Promise.resolve()
31
- .then(() => commit(result));
32
- };
31
+ .then(() => _commit(context, result));
32
+ }
33
+
34
+ module.exports = commit;
@@ -4,11 +4,11 @@ const extractFilter = require('./query/extractFilter');
4
4
  const newWhereSql = require('./query/singleQuery/newWhereSql');
5
5
  const quote = require('./quote');
6
6
 
7
- async function count(table, filter) {
7
+ async function count(context, table, filter) {
8
8
  let alias = table._dbName;
9
- filter = negotiateRawSqlFilter(filter, table);
10
- let query = newQuery(table, filter, alias);
11
- let allResults = await executeQueries([query]);
9
+ filter = negotiateRawSqlFilter(context,filter, table);
10
+ let query = newQuery(context, table, filter, alias);
11
+ let allResults = await executeQueries(context, [query]);
12
12
  let count = await allResults[0].then((rows) => {
13
13
 
14
14
  const count = Number.parseInt(rows[0]._count);
@@ -17,11 +17,11 @@ async function count(table, filter) {
17
17
  return count;
18
18
  }
19
19
 
20
- function newQuery(table, filter, alias) {
20
+ function newQuery(context, table, filter, alias) {
21
21
  filter = extractFilter(filter);
22
- var name = quote(table._dbName);
23
- alias = quote(alias);
24
- var whereSql = newWhereSql(table, filter, alias);
22
+ var name = quote(context, table._dbName);
23
+ alias = quote(context, alias);
24
+ var whereSql = newWhereSql(context, table, filter, alias);
25
25
 
26
26
  return whereSql.prepend('select count(*) "_count" from ' + name + ' ' + alias);
27
27