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
@@ -2,11 +2,11 @@ let newInsertCommand = require('../table/commands/newInsertCommand');
2
2
  let newInsertCommandCore = require('../table/commands/newInsertCommandCore');
3
3
  let executeQueries = require('../table/executeQueries');
4
4
 
5
- async function insertDefault(table, row, options) {
6
- let insertCmd = newInsertCommand(newInsertCommandCore, table, row, options);
5
+ async function insertDefault(context, table, row, options) {
6
+ let insertCmd = newInsertCommand(newInsertCommandCore.bind(null, context), table, row, options);
7
7
  insertCmd.disallowCompress = true;
8
8
 
9
- return executeQueries([insertCmd]).then((result) => result[result.length - 1]);
9
+ return executeQueries(context, [insertCmd]).then((result) => result[result.length - 1]);
10
10
 
11
11
  }
12
12
 
@@ -1,11 +1,11 @@
1
1
  let outputInsertedSql = require('./outputInsertedSql');
2
2
  let mergeSql = require('./mergeSql');
3
3
 
4
- function getSqlTemplate(_table, _row, options) {
4
+ function getSqlTemplate(_context, _table, _row, options) {
5
5
  if (hasConcurrency(_table, options) && hasColumns())
6
- return mergeSql.apply(null, arguments);
6
+ return mergeSql.apply(null, [...arguments].slice(1));
7
7
  else
8
- return insertSql.apply(null, arguments);
8
+ return insertSql.apply(null, [...arguments].slice(1));
9
9
 
10
10
  function hasColumns() {
11
11
  for(let p in _row) {
@@ -4,10 +4,6 @@ let _begin = require('../table/begin');
4
4
  let commit = require('../table/commit');
5
5
  let rollback = require('../table/rollback');
6
6
  let newPool = require('./newPool');
7
- let useHook = require('../useHook');
8
- let promise = require('promise/domains');
9
- let versionArray = process.version.replace('v', '').split('.');
10
- let major = parseInt(versionArray[0]);
11
7
  let express = require('../hostExpress');
12
8
  let hostLocal = require('../hostLocal');
13
9
  let doQuery = require('../query');
@@ -34,15 +30,11 @@ function newDatabase(connectionString, poolOptions) {
34
30
 
35
31
  if (fn)
36
32
  return domain.run(runInTransaction);
37
- else if ((major >= 12) && useHook()) {
38
- domain.exitContext = true;
39
- return domain.start().then(run);
40
- }
41
33
  else
42
34
  return domain.run(run);
43
35
 
44
36
  function begin() {
45
- return _begin(options?.readonly);
37
+ return _begin(domain, options);
46
38
  }
47
39
 
48
40
  async function runInTransaction() {
@@ -50,10 +42,10 @@ function newDatabase(connectionString, poolOptions) {
50
42
  let transaction = newTransaction(domain, pool, options);
51
43
  await new Promise(transaction)
52
44
  .then(begin)
53
- .then(fn)
45
+ .then(() => fn(domain))
54
46
  .then((res) => result = res)
55
- .then(c.commit)
56
- .then(null, c.rollback);
47
+ .then(() => c.commit(domain))
48
+ .then(null, (e) => c.rollback(domain,e));
57
49
  return result;
58
50
  }
59
51
 
@@ -61,53 +53,48 @@ function newDatabase(connectionString, poolOptions) {
61
53
  function run() {
62
54
  let p;
63
55
  let transaction = newTransaction(domain, pool, options);
64
- if (useHook())
65
- p = new Promise(transaction);
66
- else
67
- p = new promise(transaction);
56
+ p = new Promise(transaction);
68
57
 
69
58
  return p.then(begin);
70
59
  }
71
60
 
72
61
  };
73
62
 
74
- c.createTransaction = function() {
63
+ c.createTransaction = function(options) {
75
64
  let domain = createDomain();
76
65
  let transaction = newTransaction(domain, pool);
77
- let p = domain.run(() => new Promise(transaction).then(_begin));
66
+ let p = domain.run(() => new Promise(transaction).then(begin));
78
67
 
79
68
  function run(fn) {
80
69
  return p.then(domain.run.bind(domain, fn));
81
70
  }
71
+
72
+ run.rollback = rollback.bind(null, domain);
73
+ run.commit = commit.bind(null, domain);
82
74
  return run;
83
- };
84
75
 
85
- c.bindTransaction = function() {
86
- // @ts-ignore
87
- var domain = process.domain;
88
- let p = domain.run(() => true);
89
76
 
90
- function run(fn) {
91
- return p.then(domain.run.bind(domain, fn));
77
+ function begin() {
78
+ return _begin(domain, options);
92
79
  }
93
- return run;
80
+
94
81
  };
95
82
 
96
83
  c.query = function(query) {
97
84
  let domain = createDomain();
98
85
  let transaction = newTransaction(domain, pool);
99
86
  let p = domain.run(() => new Promise(transaction)
100
- .then(() => setSessionSingleton('changes', []))
101
- .then(() => doQuery(query).then(onResult, onError)));
87
+ .then(() => setSessionSingleton(domain, 'changes', []))
88
+ .then(() => doQuery(domain, query).then(onResult, onError)));
102
89
  return p;
103
90
 
104
91
  function onResult(result) {
105
- releaseDbClient();
92
+ releaseDbClient(domain);
106
93
  return result;
107
94
  }
108
95
 
109
96
  function onError(e) {
110
- releaseDbClient();
97
+ releaseDbClient(domain);
111
98
  throw e;
112
99
  }
113
100
  };
@@ -1,17 +1,17 @@
1
- var pools = require('../pools');
2
- var promise = require('../table/promise');
3
- var end = require('./pool/end');
4
- var newGenericPool = require('./pool/newGenericPool');
5
- var newId = require('../newId');
1
+ const promisify = require('../promisify');
2
+ const pools = require('../pools');
3
+ const end = require('./pool/end');
4
+ const newGenericPool = require('./pool/newGenericPool');
5
+ const newId = require('../newId');
6
6
 
7
7
  function newPool(connectionString, poolOptions) {
8
- var pool = newGenericPool(connectionString, poolOptions);
9
- var id = newId();
10
- var boundEnd = end.bind(null, pool, id);
11
- var c = {};
8
+ let pool = newGenericPool(connectionString, poolOptions);
9
+ let id = newId();
10
+ let boundEnd = end.bind(null, pool, id);
11
+ let c = {};
12
12
 
13
13
  c.connect = pool.connect;
14
- c.end = promise.denodeify(boundEnd);
14
+ c.end = promisify(boundEnd);
15
15
  pools[id] = c;
16
16
  return c;
17
17
  }
@@ -2,13 +2,13 @@ var wrapQuery = require('./wrapQuery');
2
2
  var encodeBoolean = require('./encodeBoolean');
3
3
  var deleteFromSql = require('./deleteFromSql');
4
4
  var selectForUpdateSql = require('./selectForUpdateSql');
5
- var outputInsertedSql = require('./outputInsertedSql');
6
5
  const limitAndOffset = require('./limitAndOffset');
6
+ const insertSql = require('./insertSql');
7
7
  const getManyDto = require('./getManyDto');
8
8
  const formatDateOut = require('./formatDateOut');
9
9
  const formatJSONOut = require('./formatJSONOut');
10
- const insertSql = require('./insertSql');
11
10
  const insert = require('./insert');
11
+ const quote = require('./quote');
12
12
 
13
13
  function newResolveTransaction(domain, pool, { readonly = false } = {}) {
14
14
  var rdb = {poolFactory: pool};
@@ -23,7 +23,6 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
23
23
  rdb.encodeJSON = JSON.stringify;
24
24
  rdb.deleteFromSql = deleteFromSql;
25
25
  rdb.selectForUpdateSql = selectForUpdateSql;
26
- rdb.outputInsertedSql = outputInsertedSql;
27
26
  rdb.lastInsertedIsSeparate = false;
28
27
  rdb.insertSql = insertSql;
29
28
  rdb.insert = insert;
@@ -44,7 +43,7 @@ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
44
43
  caller.visitSqlite();
45
44
  };
46
45
  rdb.aggregateCount = 0;
47
- rdb.quote = (name) => `[${name}]`;
46
+ rdb.quote = quote;
48
47
 
49
48
  if (readonly) {
50
49
  rdb.dbClient = {
@@ -1,8 +1,7 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable no-prototype-builtins */
3
- var EventEmitter = require('events').EventEmitter;
4
3
 
5
- var defaults = require('./defaults');
4
+ var defaults = require('../../poolDefaults');
6
5
  var genericPool = require('../../generic-pool');
7
6
  var tedious = require('tedious');
8
7
  var parseConnectionString = require('./parseConnectionString');
@@ -40,20 +39,9 @@ function newGenericPool(connectionString, poolOptions) {
40
39
  client.close();
41
40
  }
42
41
  });
43
- //mixin EventEmitter to pool
44
- EventEmitter.call(pool);
45
- for (var key in EventEmitter.prototype) {
46
- if (EventEmitter.prototype.hasOwnProperty(key)) {
47
- pool[key] = EventEmitter.prototype[key];
48
- }
49
- }
50
42
  //monkey-patch with connect method
51
43
  pool.connect = function(cb) {
52
- var domain = process.domain;
53
44
  pool.acquire(function(err, client) {
54
- if (domain) {
55
- cb = domain.bind(cb);
56
- }
57
45
  if (err) return cb(err, null, function() {/*NOOP*/ });
58
46
  client.poolCount++;
59
47
  cb(null, client, function(err) {
@@ -0,0 +1 @@
1
+ module.exports = (name) => `[${name}]`;
@@ -1,6 +1,5 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable */
3
- let { inspect } = require('util');
4
3
  let assert = require('assert');
5
4
  const toCompareObject = require('./toCompareObject');
6
5
 
@@ -19,7 +18,7 @@ async function validateDeleteConflict({ row, oldValue, options, table }) {
19
18
  assert.deepEqual(oldValue[p], toCompareObject(row[p]));
20
19
  }
21
20
  catch (e) {
22
- throw new Error(`The field ${p} was changed by another user. Expected ${inspect(oldValue[p], false, 10)}, but was ${inspect(row[p], false, 10)}.`);
21
+ throw new Error(`The field ${p} was changed by another user. Expected ${inspect(oldValue[p])}, but was ${inspect(row[p])}.`);
23
22
  }
24
23
  }
25
24
  }
@@ -88,5 +87,8 @@ function assertDatesEqual(date1, date2) {
88
87
  assert.deepEqual(date1, date2);
89
88
  }
90
89
 
90
+ function inspect(obj) {
91
+ return JSON.stringify(obj, null, 2);
92
+ }
91
93
 
92
94
  module.exports = validateDeleteConflict;
@@ -1,23 +0,0 @@
1
- function negotiateForwardProperty(oldDomain, newDomain, propertyName) {
2
- if(newDomain[propertyName]) return;
3
- if (propertyName === 'rdb') return;
4
- Object.defineProperty(newDomain, propertyName, {
5
- enumerable: true,
6
- get: createGetter(oldDomain, propertyName),
7
- set: createSetter(oldDomain, propertyName)
8
- });
9
- }
10
-
11
- function createGetter(oldDomain, propName) {
12
- return function() {
13
- return oldDomain[propName];
14
- };
15
- }
16
-
17
- function createSetter(oldDomain, propName) {
18
- return function(value) {
19
- oldDomain[propName] = value;
20
- };
21
- }
22
-
23
- module.exports = negotiateForwardProperty;
@@ -1,45 +0,0 @@
1
- module.exports = {
2
- // database host defaults to localhost
3
- host: 'localhost',
4
-
5
- //database user's name
6
- user: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
7
-
8
- //name of database to connect
9
- database: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
10
-
11
- //database user's password
12
- password: null,
13
-
14
- //database port
15
- port: 5432,
16
-
17
- //number of rows to return at a time from a prepared statement's
18
- //portal. 0 will return all rows at once
19
- rows: 0,
20
-
21
- // binary result mode
22
- binary: false,
23
-
24
- //Connection pool options - see https://github.com/coopernurse/node-pool
25
- //number of connections to use in connection pool
26
- //0 will disable connection pooling
27
- poolSize: 0,
28
-
29
- //max milliseconds a client can go unused before it is removed
30
- //from the pool and destroyed
31
- poolIdleTimeout: 30000,
32
-
33
- //frequeny to check for idle clients within the client pool
34
- reapIntervalMillis: 1000,
35
-
36
- //pool log function / boolean
37
- poolLog: false,
38
-
39
- client_encoding: '',
40
-
41
- ssl: false,
42
-
43
- application_name : undefined,
44
- fallback_application_name: undefined
45
- };
@@ -1,45 +0,0 @@
1
- module.exports = {
2
- // database host defaults to localhost
3
- host: 'localhost',
4
-
5
- //database user's name
6
- user: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
7
-
8
- //name of database to connect
9
- database: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
10
-
11
- //database user's password
12
- password: null,
13
-
14
- //database port
15
- port: 5432,
16
-
17
- //number of rows to return at a time from a prepared statement's
18
- //portal. 0 will return all rows at once
19
- rows: 0,
20
-
21
- // binary result mode
22
- binary: false,
23
-
24
- //Connection pool options - see https://github.com/coopernurse/node-pool
25
- //number of connections to use in connection pool
26
- //0 will disable connection pooling
27
- poolSize: 0,
28
-
29
- //max milliseconds a client can go unused before it is removed
30
- //from the pool and destroyed
31
- poolIdleTimeout: 30000,
32
-
33
- //frequeny to check for idle clients within the client pool
34
- reapIntervalMillis: 1000,
35
-
36
- //pool log function / boolean
37
- poolLog: false,
38
-
39
- client_encoding: '',
40
-
41
- ssl: false,
42
-
43
- application_name : undefined,
44
- fallback_application_name: undefined
45
- };
@@ -1,45 +0,0 @@
1
- module.exports = {
2
- // database host defaults to localhost
3
- host: 'localhost',
4
-
5
- //database user's name
6
- user: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
7
-
8
- //name of database to connect
9
- database: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
10
-
11
- //database user's password
12
- password: null,
13
-
14
- //database port
15
- port: 5432,
16
-
17
- //number of rows to return at a time from a prepared statement's
18
- //portal. 0 will return all rows at once
19
- rows: 0,
20
-
21
- // binary result mode
22
- binary: false,
23
-
24
- //Connection pool options - see https://github.com/coopernurse/node-pool
25
- //number of connections to use in connection pool
26
- //0 will disable connection pooling
27
- poolSize: 0,
28
-
29
- //max milliseconds a client can go unused before it is removed
30
- //from the pool and destroyed
31
- poolIdleTimeout: 30000,
32
-
33
- //frequeny to check for idle clients within the client pool
34
- reapIntervalMillis: 1000,
35
-
36
- //pool log function / boolean
37
- poolLog: false,
38
-
39
- client_encoding: '',
40
-
41
- ssl: false,
42
-
43
- application_name : undefined,
44
- fallback_application_name: undefined
45
- };
@@ -1,45 +0,0 @@
1
- module.exports = {
2
- // database host defaults to localhost
3
- host: 'localhost',
4
-
5
- //database user's name
6
- user: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
7
-
8
- //name of database to connect
9
- database: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
10
-
11
- //database user's password
12
- password: null,
13
-
14
- //database port
15
- port: 5432,
16
-
17
- //number of rows to return at a time from a prepared statement's
18
- //portal. 0 will return all rows at once
19
- rows: 0,
20
-
21
- // binary result mode
22
- binary: false,
23
-
24
- //Connection pool options - see https://github.com/coopernurse/node-pool
25
- //number of connections to use in connection pool
26
- //0 will disable connection pooling
27
- poolSize: 0,
28
-
29
- //max milliseconds a client can go unused before it is removed
30
- //from the pool and destroyed
31
- poolIdleTimeout: 30000,
32
-
33
- //frequeny to check for idle clients within the client pool
34
- reapIntervalMillis: 1000,
35
-
36
- //pool log function / boolean
37
- poolLog: false,
38
-
39
- client_encoding: '',
40
-
41
- ssl: false,
42
-
43
- application_name : undefined,
44
- fallback_application_name: undefined
45
- };
@@ -1,45 +0,0 @@
1
- module.exports = {
2
- // database host defaults to localhost
3
- host: 'localhost',
4
-
5
- //database user's name
6
- user: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
7
-
8
- //name of database to connect
9
- database: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
10
-
11
- //database user's password
12
- password: null,
13
-
14
- //database port
15
- port: 5432,
16
-
17
- //number of rows to return at a time from a prepared statement's
18
- //portal. 0 will return all rows at once
19
- rows: 0,
20
-
21
- // binary result mode
22
- binary: false,
23
-
24
- //Connection pool options - see https://github.com/coopernurse/node-pool
25
- //number of connections to use in connection pool
26
- //0 will disable connection pooling
27
- poolSize: 0,
28
-
29
- //max milliseconds a client can go unused before it is removed
30
- //from the pool and destroyed
31
- poolIdleTimeout: 30000,
32
-
33
- //frequeny to check for idle clients within the client pool
34
- reapIntervalMillis: 1000,
35
-
36
- //pool log function / boolean
37
- poolLog: false,
38
-
39
- client_encoding: '',
40
-
41
- ssl: false,
42
-
43
- application_name : undefined,
44
- fallback_application_name: undefined
45
- };
@@ -1,7 +0,0 @@
1
- var createJSONReadStreamDefault = require('./createJSONReadStreamDefault');
2
-
3
- function createJSONReadStream(table, db, filter, strategy, streamOptions) {
4
- return createJSONReadStreamDefault(table, db, filter, strategy, streamOptions);
5
- }
6
-
7
- module.exports = createJSONReadStream;
@@ -1,33 +0,0 @@
1
- var createReadStreamCore = require('./createReadStreamDefault');
2
- var Stream = require('stream');
3
-
4
- function createJSONReadStream(table, db, filter, strategy, streamOptions) {
5
- var transformer = Stream.Transform({ objectMode: true });
6
- var started;
7
- transformer._transform = function(obj, enc, cb) {
8
- var data = JSON.stringify(obj);
9
- if (started)
10
- transformer.push(',' + data);
11
- else {
12
- transformer.push('[');
13
- transformer.push(data);
14
- started = true;
15
- }
16
- cb();
17
- };
18
-
19
- transformer._flush = function(cb) {
20
- transformer.push(']');
21
- cb();
22
- };
23
-
24
- var objectStream = createReadStreamCore(table, db, filter, strategy, streamOptions);
25
- objectStream.on('error', onError);
26
- return objectStream.pipe(transformer);
27
-
28
- function onError(e) {
29
- transformer.emit('error', e);
30
- }
31
- }
32
-
33
- module.exports = createJSONReadStream;
@@ -1,31 +0,0 @@
1
- var createReadStreamCore = require('./createReadStreamCoreNative');
2
- var Stream = require('stream');
3
-
4
- function createJSONReadStream(table, db, filter, strategy, streamOptions) {
5
- var transformer = Stream.Transform({
6
- objectMode: true
7
- });
8
- var started;
9
- transformer._transform = function(chunk, enc, cb) {
10
- if (started)
11
- transformer.push(',' + chunk.result);
12
- else {
13
- transformer.push('[');
14
- let result = chunk.result;
15
- if (typeof result === 'object')
16
- result = JSON.stringify(result);
17
- transformer.push(result);
18
- started = true;
19
- }
20
- cb();
21
- };
22
-
23
- transformer._flush = function(cb) {
24
- transformer.push(']');
25
- cb();
26
- };
27
-
28
- return createReadStreamCore(table, db, filter, strategy, transformer, streamOptions);
29
- }
30
-
31
- module.exports = createJSONReadStream;
@@ -1,24 +0,0 @@
1
- var createReadStreamNative = require('./createReadStreamNative');
2
- var createReadStreamDefault = require('./createReadStreamDefault');
3
-
4
- function createReadStream(table, db, filter, strategy, streamOptions) {
5
- var create;
6
- var c = {};
7
-
8
- c.visitPg = function() {
9
- create = createReadStreamNative;
10
- };
11
-
12
- c.visitMySql = c.visitPg;
13
-
14
- c.visitSqlite = function() {
15
- create = createReadStreamDefault;
16
- };
17
- c.visitSap = c.visitSqlite;
18
-
19
- db.accept(c);
20
-
21
- return create(table, db, filter, strategy, streamOptions);
22
- }
23
-
24
- module.exports = createReadStream;
@@ -1,40 +0,0 @@
1
- var newQuery = require('./readStream/newQuery');
2
- var strategyToSpan = require('./strategyToSpan');
3
- var negotiateRawSqlFilter = require('./column/negotiateRawSqlFilter');
4
- var newQueryStream = require('./readStream/newQueryStream');
5
-
6
- function createReadStreamCoreNative(table, db, filter, strategy, transformer, streamOptions) {
7
- var alias = table._dbName;
8
- filter = negotiateRawSqlFilter(filter, table);
9
- var span = strategyToSpan(table, strategy);
10
-
11
- if (process.domain)
12
- process.domain.add(transformer);
13
-
14
- db.transaction(async () => {
15
- await start();
16
- }).then(null, onError);
17
-
18
- function start() {
19
- return new Promise((resolve, reject) => {
20
- var query = newQuery(db, table, filter, span, alias);
21
- var queryStream = newQueryStream(query, streamOptions);
22
- queryStream.on('end', resolve);
23
- queryStream.on('error', onStreamError);
24
- queryStream.pipe(transformer);
25
-
26
- function onStreamError(e) {
27
- reject(e);
28
- }
29
- });
30
-
31
- }
32
-
33
- function onError(e) {
34
- transformer.emit('error', e);
35
- }
36
-
37
- return transformer;
38
- }
39
-
40
- module.exports = createReadStreamCoreNative;