orange-orm 4.5.0-beta.0 → 4.5.0-beta.2

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 (310) hide show
  1. package/README.md +6 -1
  2. package/docs/changelog.md +4 -0
  3. package/package.json +10 -6
  4. package/src/applyPatch.js +5 -2
  5. package/src/client/index.js +3 -2
  6. package/src/client/index.mjs +13552 -6381
  7. package/src/client/rollup.config.js +24 -4
  8. package/src/client/stringify.js +2 -9
  9. package/src/createDomain.js +7 -28
  10. package/src/d1/newDatabase.js +23 -37
  11. package/src/d1/newPool.js +6 -6
  12. package/src/d1/newTransaction.js +1 -0
  13. package/src/d1/pool/newGenericPool.js +2 -14
  14. package/src/emitEvent.js +6 -4
  15. package/src/emptyFilter.js +12 -12
  16. package/src/format.js +9 -0
  17. package/src/generic-pool.js +274 -313
  18. package/src/getManyDto/newQuery.js +5 -5
  19. package/src/getManyDto/query/newSingleQuery.js +5 -5
  20. package/src/getManyDto.js +73 -41
  21. package/src/hostExpress/cycle.ts +211 -0
  22. package/src/hostExpress/executePath.js +361 -357
  23. package/src/hostExpress.js +2 -7
  24. package/src/hostLocal.js +9 -9
  25. package/src/index.js +13 -17
  26. package/src/indexBrowser.js +39 -0
  27. package/src/mssql/newDatabase.js +19 -31
  28. package/src/mssql/newPool.js +2 -2
  29. package/src/mssql/newTransaction.js +4 -3
  30. package/src/mssql/pool/newGenericPool.js +1 -13
  31. package/src/mySql/deleteFromSql.js +5 -5
  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 +2 -2
  38. package/src/mySql/pool/newGenericPool.js +2 -15
  39. package/src/mySql/quote.js +1 -0
  40. package/src/newId.js +2 -1
  41. package/src/newImmutable.js +1 -2
  42. package/src/oracle/deleteFromSql.js +5 -5
  43. package/src/oracle/formatDateOut.js +1 -1
  44. package/src/oracle/insert.js +6 -6
  45. package/src/oracle/insertSql.js +6 -14
  46. package/src/oracle/lastInsertedSql.js +3 -3
  47. package/src/oracle/mergeSql.js +3 -6
  48. package/src/oracle/newDatabase.js +18 -33
  49. package/src/oracle/newInsertCommandCore.js +5 -5
  50. package/src/oracle/newPool.js +10 -10
  51. package/src/oracle/newTransaction.js +2 -1
  52. package/src/oracle/pool/newGenericPool.js +2 -14
  53. package/src/oracle/quote.js +1 -0
  54. package/src/oracle/wrapQuery.js +0 -3
  55. package/src/package.json +5 -0
  56. package/src/patchRow.js +2 -2
  57. package/src/patchTable.js +6 -5
  58. package/src/pg/deleteFromSql.js +5 -5
  59. package/src/pg/formatDateOut.js +1 -2
  60. package/src/pg/insert.js +3 -3
  61. package/src/pg/insertSql.js +2 -7
  62. package/src/pg/lastInsertedSql.js +1 -2
  63. package/src/pg/newDatabase.js +20 -37
  64. package/src/pg/newPool.js +10 -10
  65. package/src/pg/newTransaction.js +2 -1
  66. package/src/pg/pool/newPgPool.js +23 -16
  67. package/src/pg/pool/parseSearchPathParam.js +10 -0
  68. package/src/pg/quote.js +2 -0
  69. package/src/pg/schema.js +2 -2
  70. package/src/{mySql/pool/defaults.js → poolDefaults.js} +0 -2
  71. package/src/promisify.js +24 -0
  72. package/src/query.js +2 -2
  73. package/src/sap/deleteFromSql.js +3 -3
  74. package/src/sap/formatDateOut.js +1 -1
  75. package/src/sap/insert.js +5 -5
  76. package/src/sap/insertSql.js +4 -5
  77. package/src/sap/lastInsertedSql.js +3 -3
  78. package/src/sap/mergeSql.js +1 -2
  79. package/src/sap/newDatabase.js +23 -34
  80. package/src/sap/newPool.js +2 -2
  81. package/src/sap/newTransaction.js +2 -1
  82. package/src/sap/quote.js +1 -0
  83. package/src/sqlite/deleteFromSql.js +5 -5
  84. package/src/sqlite/insert.js +5 -5
  85. package/src/sqlite/insertSql.js +2 -2
  86. package/src/sqlite/lastInsertedSql.js +2 -2
  87. package/src/sqlite/newDatabase.js +16 -32
  88. package/src/sqlite/newPool.js +10 -10
  89. package/src/sqlite/newTransaction.js +2 -1
  90. package/src/sqlite/pool/newGenericPool.js +1 -13
  91. package/src/sqlite/quote.js +1 -0
  92. package/src/table/aggregate.js +1 -1
  93. package/src/table/begin.js +5 -5
  94. package/src/table/cascadeDelete.js +2 -2
  95. package/src/table/column/binary/newDecode.js +2 -2
  96. package/src/table/column/binary/newEncode.js +3 -4
  97. package/src/table/column/boolean/newDecode.js +1 -1
  98. package/src/table/column/boolean/newEncode.js +6 -6
  99. package/src/table/column/date/formatOut.js +3 -5
  100. package/src/table/column/date/newDecode.js +2 -2
  101. package/src/table/column/date/newEncode.js +8 -8
  102. package/src/table/column/date/tryParseISO.js +6 -8
  103. package/src/table/column/date.js +1 -1
  104. package/src/table/column/dateWithTimeZone/newEncode.js +3 -4
  105. package/src/table/column/dateWithTimeZone.js +1 -1
  106. package/src/table/column/encodeFilterArg.js +3 -3
  107. package/src/table/column/equal.js +3 -3
  108. package/src/table/column/extractAlias.js +0 -2
  109. package/src/table/column/greaterThan.js +3 -3
  110. package/src/table/column/greaterThanOrEqual.js +3 -3
  111. package/src/table/column/guid/newDecode.js +1 -1
  112. package/src/table/column/guid/newEncode.js +3 -3
  113. package/src/table/column/in.js +3 -3
  114. package/src/table/column/json/formatOut.js +3 -3
  115. package/src/table/column/json/newDecode.js +3 -3
  116. package/src/table/column/json/newEncode.js +6 -6
  117. package/src/table/column/json.js +2 -1
  118. package/src/table/column/lessThan.js +3 -3
  119. package/src/table/column/lessThanOrEqual.js +4 -4
  120. package/src/table/column/negotiateRawSqlFilter.js +1 -72
  121. package/src/table/column/newBoolean.js +2 -53
  122. package/src/table/column/newColumn.js +21 -21
  123. package/src/table/column/newDecodeCore.js +1 -1
  124. package/src/table/column/notEqual.js +3 -3
  125. package/src/table/column/numeric/newDecode.js +2 -2
  126. package/src/table/column/numeric/newEncode.js +3 -3
  127. package/src/table/column/string/contains.js +2 -1
  128. package/src/table/column/string/containsCore.js +5 -5
  129. package/src/table/column/string/endsWith.js +1 -1
  130. package/src/table/column/string/endsWithCore.js +4 -4
  131. package/src/table/column/string/iContains.js +2 -1
  132. package/src/table/column/string/iEndsWith.js +1 -1
  133. package/src/table/column/string/iEqual.js +3 -3
  134. package/src/table/column/string/iStartsWith.js +1 -1
  135. package/src/table/column/string/newEncode.js +3 -3
  136. package/src/table/column/string/startsWith.js +1 -1
  137. package/src/table/column/string/startsWithCore.js +4 -4
  138. package/src/table/column/string.js +14 -14
  139. package/src/table/column/utils.js +113 -0
  140. package/src/table/column.js +6 -2
  141. package/src/table/commands/beginCommand.js +2 -2
  142. package/src/table/commands/compressChanges.js +2 -2
  143. package/src/table/commands/delete/newSingleCommand.js +5 -5
  144. package/src/table/commands/delete/singleCommand/joinSql.js +12 -12
  145. package/src/table/commands/delete/singleCommand/newSingleCommandCore.js +2 -2
  146. package/src/table/commands/delete/singleCommand/selectSql.js +6 -6
  147. package/src/table/commands/delete/singleCommand/subFilter.js +11 -11
  148. package/src/table/commands/delete/singleCommand/whereSql.js +2 -2
  149. package/src/table/commands/getChangeSet.js +2 -2
  150. package/src/table/commands/insert/getSqlTemplate.js +16 -16
  151. package/src/table/commands/lastCommandMatches.js +2 -2
  152. package/src/table/commands/newDeleteCommand.js +5 -10
  153. package/src/table/commands/newGetLastInsertedCommand.js +4 -4
  154. package/src/table/commands/newGetLastInsertedCommandCore.js +5 -5
  155. package/src/table/commands/newInsertCommand.js +5 -3
  156. package/src/table/commands/newInsertCommandCore.js +12 -12
  157. package/src/table/commands/newRow.js +4 -4
  158. package/src/table/commands/newUpdateCommand.js +4 -4
  159. package/src/table/commands/newUpdateCommandCore.js +4 -4
  160. package/src/table/commands/pushCommand.js +2 -2
  161. package/src/table/commit.js +13 -11
  162. package/src/table/count.js +8 -8
  163. package/src/table/delete.js +4 -4
  164. package/src/table/deleteSessionContext.js +2 -14
  165. package/src/table/executeQueries/executeChanges.js +3 -3
  166. package/src/table/executeQueries/executeQueriesCore.js +2 -2
  167. package/src/table/executeQueries/executeQuery.js +2 -2
  168. package/src/table/executeQueries/resolveExecuteQuery.js +3 -10
  169. package/src/table/executeQueries.js +4 -4
  170. package/src/table/getFromDbById.js +1 -1
  171. package/src/table/getMany.js +7 -7
  172. package/src/table/getManyDto.js +3 -4
  173. package/src/table/getSessionContext.js +4 -4
  174. package/src/table/getSessionSingleton.js +3 -2
  175. package/src/table/groupBy/newQuery.js +4 -4
  176. package/src/table/groupBy.js +9 -9
  177. package/src/table/insert.js +10 -13
  178. package/src/table/joinRelation/getRelatives.js +6 -6
  179. package/src/table/newCascadeDeleteStrategy.js +1 -7
  180. package/src/table/newGetRelated.js +3 -3
  181. package/src/table/newManyRelation.js +9 -9
  182. package/src/table/newOneRelation.js +9 -9
  183. package/src/table/newPrimaryKeyFilter.js +6 -6
  184. package/src/table/newQuery.js +5 -5
  185. package/src/table/newRelatedTable.js +6 -12
  186. package/src/table/newRowCache.js +17 -17
  187. package/src/table/newThrow.js +2 -2
  188. package/src/table/oneRelation/getRelatives.js +5 -5
  189. package/src/table/popChanges.js +3 -3
  190. package/src/table/promise.js +2 -8
  191. package/src/table/query/extractLimit.js +2 -2
  192. package/src/table/query/extractOffset.js +2 -2
  193. package/src/table/query/extractOrderBy.js +2 -2
  194. package/src/table/query/newParameterized.js +8 -11
  195. package/src/table/query/newSingleQuery.js +7 -7
  196. package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
  197. package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
  198. package/src/table/query/singleQuery/columnSql/newShallowColumnSql.js +4 -4
  199. package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
  200. package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +2 -7
  201. package/src/table/query/singleQuery/joinSql/joinLegToShallowJoinSql.js +2 -2
  202. package/src/table/query/singleQuery/joinSql/newDiscriminatorSql.js +2 -2
  203. package/src/table/query/singleQuery/joinSql/newShallowJoinSql.js +5 -5
  204. package/src/table/query/singleQuery/joinSql/newShallowJoinSqlCore.js +6 -5
  205. package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +2 -8
  206. package/src/table/query/singleQuery/joinSql/oneLegToShallowJoinSql.js +2 -2
  207. package/src/table/query/singleQuery/negotiateExclusive.js +2 -2
  208. package/src/table/query/singleQuery/newColumnSql.js +3 -3
  209. package/src/table/query/singleQuery/newDiscriminatorSql.js +2 -2
  210. package/src/table/query/singleQuery/newJoinSql.js +7 -7
  211. package/src/table/query/singleQuery/newWhereSql.js +3 -3
  212. package/src/table/quote.js +4 -4
  213. package/src/table/relatedTable/aggregate.js +2 -8
  214. package/src/table/relatedTable/all.js +6 -12
  215. package/src/table/relatedTable/any.js +4 -11
  216. package/src/table/relatedTable/childColumn.js +12 -12
  217. package/src/table/relatedTable/columnAggregate.js +3 -3
  218. package/src/table/relatedTable/columnAggregateGroup.js +11 -11
  219. package/src/table/relatedTable/joinSql.js +5 -5
  220. package/src/table/relatedTable/joinSqlArray.js +3 -3
  221. package/src/table/relatedTable/none.js +4 -10
  222. package/src/table/relatedTable/relatedColumn.js +13 -13
  223. package/src/table/relatedTable/selectSql.js +2 -2
  224. package/src/table/relatedTable/subFilter.js +4 -4
  225. package/src/table/relatedTable/where.js +3 -9
  226. package/src/table/relatedTable/whereSql.js +2 -2
  227. package/src/table/relation/manyCache/synchronizeAdded.js +2 -2
  228. package/src/table/relation/manyCache/synchronizeChanged.js +3 -3
  229. package/src/table/relation/manyCache/synchronizeRemoved.js +2 -2
  230. package/src/table/relation/newForeignKeyFilter.js +2 -2
  231. package/src/table/relation/newManyCache.js +25 -17
  232. package/src/table/relation/newOneCache.js +6 -6
  233. package/src/table/releaseDbClient.js +4 -4
  234. package/src/table/resultToPromise.js +1 -3
  235. package/src/table/resultToRows/dbRowToRow.js +6 -13
  236. package/src/table/resultToRows/dbRowsToRows.js +2 -2
  237. package/src/table/resultToRows/decodeDbRow.js +2 -2
  238. package/src/table/resultToRows/delete/removeFromCache.js +4 -11
  239. package/src/table/resultToRows/delete.js +6 -6
  240. package/src/table/resultToRows/newDecodeDbRow.js +19 -25
  241. package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
  242. package/src/table/resultToRows/toDto.js +3 -3
  243. package/src/table/resultToRows.js +3 -3
  244. package/src/table/rollback.js +21 -11
  245. package/src/table/rowArray/negotiateNextTick.js +1 -2
  246. package/src/table/setSessionSingleton.js +6 -3
  247. package/src/table/tryGetFirstFromDb.js +4 -4
  248. package/src/table/tryGetFromCacheById.js +3 -3
  249. package/src/table/tryGetFromDbById/extractStrategy.js +2 -2
  250. package/src/table/tryGetFromDbById.js +8 -6
  251. package/src/table/tryGetSessionContext.js +3 -13
  252. package/src/table/tryReleaseDbClient.js +2 -2
  253. package/src/table/updateField.js +4 -4
  254. package/src/table/where.js +2 -2
  255. package/src/table.js +56 -53
  256. package/src/tedious/deleteFromSql.js +5 -5
  257. package/src/tedious/formatDateOut.js +1 -1
  258. package/src/tedious/getManyDto/newQueryCore.js +5 -5
  259. package/src/tedious/getManyDto/query/newSingleQuery.js +5 -5
  260. package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +4 -5
  261. package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +4 -5
  262. package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
  263. package/src/tedious/getManyDto/query/newSubQueries.js +9 -26
  264. package/src/tedious/getManyDto/query/singleQuery/newShallowColumnSql.js +5 -6
  265. package/src/tedious/getManyDto.js +6 -6
  266. package/src/tedious/insert.js +3 -3
  267. package/src/tedious/insertSql.js +3 -3
  268. package/src/tedious/newDatabase.js +17 -30
  269. package/src/tedious/newPool.js +10 -10
  270. package/src/tedious/newTransaction.js +3 -4
  271. package/src/tedious/pool/newGenericPool.js +1 -13
  272. package/src/tedious/quote.js +1 -0
  273. package/src/validateDeleteConflict.js +4 -2
  274. package/src/createDomain/negotiateForwardProperty.js +0 -23
  275. package/src/d1/pool/defaults.js +0 -45
  276. package/src/mssql/pool/defaults.js +0 -45
  277. package/src/oracle/pool/defaults.js +0 -45
  278. package/src/pg/pool/defaults.js +0 -45
  279. package/src/sqlite/pool/defaults.js +0 -45
  280. package/src/table/createJSONReadStream.js +0 -7
  281. package/src/table/createJSONReadStreamDefault.js +0 -33
  282. package/src/table/createJSONReadStreamNative.js +0 -31
  283. package/src/table/createReadStream.js +0 -24
  284. package/src/table/createReadStreamCoreNative.js +0 -40
  285. package/src/table/createReadStreamDefault.js +0 -102
  286. package/src/table/createReadStreamNative.js +0 -17
  287. package/src/table/readStream/extractLimit.js +0 -7
  288. package/src/table/readStream/extractOrderBy.js +0 -59
  289. package/src/table/readStream/mySql/newQuery.js +0 -16
  290. package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
  291. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
  292. package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
  293. package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
  294. package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
  295. package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
  296. package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
  297. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
  298. package/src/table/readStream/newQuery.js +0 -32
  299. package/src/table/readStream/newQueryStream.js +0 -8
  300. package/src/table/readStream/pg/newQuery.js +0 -8
  301. package/src/table/readStream/pg/newQueryCore.js +0 -17
  302. package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
  303. package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
  304. package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
  305. package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
  306. package/src/table/readStream/pg/query/newSubQueries.js +0 -47
  307. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
  308. package/src/table/readStreamDefault/createBatchFilter.js +0 -39
  309. package/src/tedious/pool/defaults.js +0 -45
  310. package/src/useHook.js +0 -9
@@ -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);
@@ -1,20 +1,15 @@
1
1
  var newSingleCommand = require('./delete/newSingleCommand');
2
2
 
3
- var nextCommand = function() {
4
- nextCommand = require('./newDeleteCommand');
5
- nextCommand.apply(null, arguments);
6
- };
7
-
8
- function newCommand(queries,table,filter,strategy,relations) {
9
- var singleCommand = newSingleCommand(table,filter,relations);
10
- for(var name in strategy) {
3
+ function newCommand(context, queries, table, filter, strategy, relations) {
4
+ var singleCommand = newSingleCommand(context, table, filter, relations);
5
+ for (var name in strategy) {
11
6
  if (!(strategy[name] === null || strategy[name]))
12
7
  continue;
13
8
  var childStrategy = strategy[name];
14
9
  var childRelation = table._relations[name];
15
10
  var joinRelation = childRelation.joinRelation;
16
- var childRelations = [joinRelation].concat(relations);
17
- nextCommand(queries,childRelation.childTable,filter,childStrategy,childRelations);
11
+ var childRelations = [joinRelation].concat(relations);
12
+ newCommand(context, queries, childRelation.childTable, filter, childStrategy, childRelations);
18
13
  }
19
14
  queries.push(singleCommand);
20
15
  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');
@@ -30,7 +29,7 @@ InsertCommand.prototype.matches = function(otherRow) {
30
29
  InsertCommand.prototype.endEdit = function() {
31
30
  this.sql();
32
31
  var dto = createDto(this._table, this._row);
33
- if (this._table._emitChanged.callbacks.length > 0)
32
+ if (this._disallowCompress || this._table._emitChanged.callbacks.length > 0)
34
33
  this._patch = createPatch([], [dto]);
35
34
  };
36
35
 
@@ -47,8 +46,11 @@ Object.defineProperty(InsertCommand.prototype, 'parameters', {
47
46
 
48
47
  Object.defineProperty(InsertCommand.prototype, 'disallowCompress', {
49
48
  get: function() {
50
- return this._table._emitChanged.callbacks.length > 0;
49
+ return this._disallowCompress || this._table._emitChanged.callbacks.length > 0;
51
50
 
51
+ },
52
+ set: function(value) {
53
+ this._disallowCompress = value;
52
54
  }
53
55
  });
54
56
 
@@ -1,17 +1,17 @@
1
- var newParameterized = require('../query/newParameterized');
2
- var getSqlTemplate = require('./insert/getSqlTemplate');
3
- var util = require('util');
1
+ const newParameterized = require('../query/newParameterized');
2
+ const getSqlTemplate = require('./insert/getSqlTemplate');
3
+ const formatString = require('../../format');
4
4
 
5
- function newInsertCommandCore(table, row, options = {}) {
6
- var parameters = [];
7
- var values = [getSqlTemplate(table, row, options)];
5
+ function newInsertCommandCore(context, table, row, options = {}) {
6
+ let parameters = [];
7
+ let values = [getSqlTemplate(context, table, row, options)];
8
8
 
9
- var columns = table._columns;
10
- for (var i = 0; i < columns.length; i++) {
11
- var column = columns[i];
12
- var alias = column.alias;
9
+ let columns = table._columns;
10
+ for (let i = 0; i < columns.length; i++) {
11
+ let column = columns[i];
12
+ let alias = column.alias;
13
13
  if (row['__' + column.alias] !== undefined) {
14
- var encoded = column.encode(row[alias]);
14
+ let encoded = column.encode(context, row[alias]);
15
15
  if (encoded.parameters.length > 0) {
16
16
  values.push('?');
17
17
  parameters.push(encoded.parameters[0]);
@@ -20,7 +20,7 @@ function newInsertCommandCore(table, row, options = {}) {
20
20
  }
21
21
  }
22
22
 
23
- var sql = util.format.apply(null, values);
23
+ let sql = formatString.apply(null, values);
24
24
  return newParameterized(sql, parameters);
25
25
  }
26
26
 
@@ -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('transactionLess'))
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
 
@@ -4,15 +4,15 @@ var extractDeleteStrategy = require('./extractDeleteStrategy');
4
4
  var negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
5
5
  var emptyPromise = require('./resultToPromise')();
6
6
 
7
- function _delete(table, filter, strategy) {
8
- filter = negotiateRawSqlFilter(filter, table);
7
+ function _delete(context, table, filter, strategy) {
8
+ filter = negotiateRawSqlFilter(context, filter, table);
9
9
  strategy = extractDeleteStrategy(strategy);
10
10
  var relations = [];
11
11
  var cmds = [];
12
12
 
13
- cmds = newDeleteCommand(cmds, table, filter, strategy, relations);
13
+ cmds = newDeleteCommand(context, cmds, table, filter, strategy, relations);
14
14
  cmds.forEach(function(cmd) {
15
- pushCommand(cmd);
15
+ pushCommand(context, cmd);
16
16
  });
17
17
  return emptyPromise;
18
18
  }
@@ -1,17 +1,5 @@
1
- let useHook = require('../useHook');
2
- let cls;
3
-
4
- function deleteSessionContext() {
5
- if (useHook()) {
6
- if (!cls)
7
- cls = require('node-cls');
8
- let context = cls.get('rdb');
9
- delete context.rdb;
10
- if (context.exit)
11
- cls.exit('rdb');
12
- }
13
- else
14
- delete process.domain.rdb;
1
+ function deleteSessionContext(context) {
2
+ delete context.rdb;
15
3
  }
16
4
 
17
5
  module.exports = deleteSessionContext;
@@ -1,7 +1,7 @@
1
1
  var executeQuery = require('./executeQuery');
2
2
  var newPromise = require('../promise');
3
3
 
4
- function executeChanges(queries) {
4
+ function executeChanges(context, queries) {
5
5
  if (queries.length === 0)
6
6
  return newPromise();
7
7
  var i = -1;
@@ -11,9 +11,9 @@ function executeChanges(queries) {
11
11
  function execute() {
12
12
  i++;
13
13
  if (i + 1 === queries.length)
14
- return executeQuery(queries[i]).then(notifyListener);
14
+ return executeQuery(context, queries[i]).then(notifyListener);
15
15
  else {
16
- return executeQuery(queries[i]).then(notifyListener).then(execute);
16
+ return executeQuery(context, queries[i]).then(notifyListener).then(execute);
17
17
  }
18
18
  }
19
19
 
@@ -1,9 +1,9 @@
1
1
  var executeQuery = require('./executeQuery');
2
2
 
3
- function executeQueriesCore(queries) {
3
+ function executeQueriesCore(context, queries) {
4
4
  var promises = [];
5
5
  for (var i = 0; i < queries.length; i++) {
6
- var q = executeQuery(queries[i]);
6
+ var q = executeQuery(context, queries[i]);
7
7
  promises.push(q);
8
8
  }
9
9
  return promises;
@@ -1,7 +1,7 @@
1
1
  var newResolver = require('./resolveExecuteQuery');
2
2
 
3
- function executeQuery(query) {
4
- var resolver = newResolver(query);
3
+ function executeQuery(context, query) {
4
+ var resolver = newResolver(context, query);
5
5
  return new Promise(resolver);
6
6
  }
7
7
 
@@ -1,18 +1,11 @@
1
- var getSessionSingleton = require('../getSessionSingleton');
1
+ const getSessionSingleton = require('../getSessionSingleton');
2
2
 
3
- function resolveExecuteQuery(query) {
3
+ function resolveExecuteQuery(context, query) {
4
4
  return resolve;
5
5
 
6
6
  function resolve(success, failed) {
7
7
  try {
8
-
9
- var domain = process.domain;
10
- if (domain) {
11
- success = process.domain.bind(success);
12
- failed = process.domain.bind(failed);
13
- }
14
-
15
- var client = getSessionSingleton('dbClient');
8
+ var client = getSessionSingleton(context, 'dbClient');
16
9
  query = negotiateNullParams(query);
17
10
  client.executeQuery(query, onCompleted);
18
11
  } catch (e) {
@@ -2,13 +2,13 @@ var executeChanges = require('./executeQueries/executeChanges');
2
2
  var popChanges = require('./popChanges');
3
3
  var executeQueriesCore = require('./executeQueries/executeQueriesCore');
4
4
 
5
- function executeQueries(queries) {
6
- var changes = popChanges();
5
+ function executeQueries(context, queries) {
6
+ var changes = popChanges(context);
7
7
 
8
- return executeChanges(changes).then(onDoneChanges);
8
+ return executeChanges(context, changes).then(onDoneChanges);
9
9
 
10
10
  function onDoneChanges() {
11
- return executeQueriesCore(queries);
11
+ return executeQueriesCore(context, queries);
12
12
  }
13
13
  }
14
14
 
@@ -1,6 +1,6 @@
1
1
  let tryGetFromDbById = require('./tryGetFromDbById');
2
2
 
3
- function get(table, ...ids) {
3
+ function get(_context, table, ...ids) {
4
4
  return tryGetFromDbById.apply(null, arguments).then((row) => onResult(table, row, ids));
5
5
  }
6
6
 
@@ -5,18 +5,18 @@ let strategyToSpan = require('./strategyToSpan');
5
5
  let emptyInnerJoin = require('./query/newParameterized')();
6
6
  let negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
7
7
 
8
- function getMany(table,filter,strategy) {
9
- return getManyCore(table,filter,strategy);
8
+ function getMany(context,table,filter,strategy) {
9
+ return getManyCore(context, table,filter,strategy);
10
10
  }
11
11
 
12
- async function getManyCore(table,filter,strategy,exclusive) {
12
+ async function getManyCore(context,table,filter,strategy,exclusive) {
13
13
  let alias = table._dbName;
14
14
  let noOrderBy;
15
- filter = negotiateRawSqlFilter(filter, table);
15
+ filter = negotiateRawSqlFilter(context, filter, table);
16
16
  let span = strategyToSpan(table,strategy);
17
- let queries = newQuery([],table,filter,span,alias,emptyInnerJoin,noOrderBy,exclusive);
18
- let result = await executeQueries(queries);
19
- return resultToRows(span,result);
17
+ let queries = newQuery(context, [],table,filter,span,alias,emptyInnerJoin,noOrderBy,exclusive);
18
+ let result = await executeQueries(context, queries);
19
+ return resultToRows(context, span,result);
20
20
  }
21
21
 
22
22
  getMany.exclusive = function(table,filter,strategy) {
@@ -1,9 +1,8 @@
1
- const tryGetSessionContext = require('../table/tryGetSessionContext');
1
+ const getSessionSingleton = require('../table/getSessionSingleton');
2
2
  const getManyDtoCore = require('../getManyDto');
3
3
 
4
-
5
- function getManyDto(_table, _filter, _strategy) {
6
- const _getManyDto = tryGetSessionContext().getManyDto || getManyDtoCore;
4
+ function getManyDto(context, _table, _filter, _strategy) {
5
+ const _getManyDto = getSessionSingleton(context, 'getManyDto') || getManyDtoCore;
7
6
  return _getManyDto.apply(null, arguments);
8
7
  }
9
8
 
@@ -1,10 +1,10 @@
1
1
  let tryGetSessionContext = require('./tryGetSessionContext');
2
2
 
3
- function getSessionContext() {
4
- let context = tryGetSessionContext();
5
- if (!context)
3
+ function getSessionContext(context) {
4
+ const rdb = tryGetSessionContext(context);
5
+ if (!rdb)
6
6
  throw new Error('Rdb transaction is no longer available. Is promise chain broken ?');
7
- return context;
7
+ return rdb;
8
8
  }
9
9
 
10
10
  module.exports = getSessionContext;