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
package/src/hostLocal.js CHANGED
@@ -44,10 +44,10 @@ function hostLocal() {
44
44
  }
45
45
  return result;
46
46
 
47
- async function fn() {
48
- setSessionSingleton('ignoreSerializable', true);
47
+ async function fn(context) {
48
+ setSessionSingleton(context, 'ignoreSerializable', true);
49
49
  let patch = body.patch;
50
- result = await table.patch(patch, { ..._options, ...body.options, isHttp });
50
+ result = await table.patch(context, patch, { ..._options, ...body.options, isHttp });
51
51
  }
52
52
  }
53
53
 
@@ -72,10 +72,10 @@ function hostLocal() {
72
72
  }
73
73
  return result;
74
74
 
75
- async function fn() {
76
- setSessionSingleton('ignoreSerializable', true);
75
+ async function fn(context) {
76
+ setSessionSingleton(context, 'ignoreSerializable', true);
77
77
  const options = { ..._options, ...body.options, JSONFilter: body, request, response, isHttp };
78
- result = await executePath(options);
78
+ result = await executePath(context, options);
79
79
  }
80
80
  }
81
81
  async function query() {
@@ -97,8 +97,8 @@ function hostLocal() {
97
97
 
98
98
  return result;
99
99
 
100
- async function fn() {
101
- result = await executeQuery.apply(null, args);
100
+ async function fn(...args1) {
101
+ result = await executeQuery.apply(null, [...args1, ...args]);
102
102
  }
103
103
 
104
104
  }
package/src/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Options } from './ajv';
2
2
  import type { RequestHandler } from 'express';
3
+ import type { D1Database } from '@cloudflare/workers-types';
3
4
  import type { ConnectionConfiguration } from 'tedious';
4
5
  import type { PoolAttributes } from 'oracledb';
5
6
  import type { AllowedDbMap, DbMapper, MappedDbDef } from './map';
@@ -10,6 +11,7 @@ declare namespace r {
10
11
 
11
12
  function table(name: string): Table;
12
13
  function end(): Promise<void>;
14
+ function d1(database: D1Database, options?: PoolOptions): Pool;
13
15
  function postgres(connectionString: string, options?: PoolOptions): Pool;
14
16
  function sqlite(connectionString: string, options?: PoolOptions): Pool;
15
17
  function sap(connectionString: string, options?: PoolOptions): Pool;
package/src/index.js CHANGED
@@ -1,14 +1,14 @@
1
- var hostExpress = require('./hostExpress');
2
- var client = require('./client/index.js');
3
- var _mySql;
4
- var _pg;
5
- var _sqlite;
6
- var _mssqlNative;
7
- var _sap;
8
- var _mssql;
9
- var _oracle;
10
- var flags = require('./flags');
11
- var map = require('./client/map');
1
+ const hostExpress = require('./hostExpress');
2
+ const client = require('./client/index.js');
3
+ const map = require('./client/map');
4
+ let _mySql;
5
+ let _pg;
6
+ let _sqlite;
7
+ let _mssqlNative;
8
+ let _sap;
9
+ let _mssql;
10
+ let _oracle;
11
+ let _d1;
12
12
 
13
13
  var connectViaPool = function(connectionString) {
14
14
  if (connectionString.indexOf && connectionString.indexOf('mysql') === 0)
@@ -51,7 +51,6 @@ Object.defineProperty(connectViaPool, 'mySql', {
51
51
  return _mySql;
52
52
  }
53
53
  });
54
-
55
54
  Object.defineProperty(connectViaPool, 'postgres', {
56
55
  get: function() {
57
56
  if (!_pg)
@@ -76,6 +75,14 @@ Object.defineProperty(connectViaPool, 'sqlite', {
76
75
  }
77
76
  });
78
77
 
78
+ Object.defineProperty(connectViaPool, 'd1', {
79
+ get: function() {
80
+ if (!_d1)
81
+ _d1 = require('./d1/newDatabase');
82
+ return _d1;
83
+ }
84
+ });
85
+
79
86
  Object.defineProperty(connectViaPool, 'mssqlNative', {
80
87
  get: function() {
81
88
  if (!_mssqlNative)
@@ -109,8 +116,5 @@ Object.defineProperty(connectViaPool, 'oracle', {
109
116
  });
110
117
 
111
118
  connectViaPool.express = hostExpress;
112
- connectViaPool.useHook = function(bool) {
113
- flags.useHook = bool;
114
- };
115
119
 
116
120
  module.exports = connectViaPool;
package/src/map.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Options } from './ajv';
2
2
  import type { ConnectionConfiguration } from 'tedious';
3
+ import type { D1Database } from '@cloudflare/workers-types';
3
4
  import type { PoolAttributes } from 'oracledb';
4
5
  import type { AxiosInterceptorManager, InternalAxiosRequestConfig, AxiosResponse } from 'axios';
5
6
 
@@ -29,6 +30,7 @@ type MappedDb<T> = {
29
30
 
30
31
  type DbConnectable<T> = {
31
32
  http(url: string): MappedDbInstance<T>;
33
+ d1(database: D1Database): MappedDbInstance<T>;
32
34
  postgres(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
33
35
  sqlite(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
34
36
  sap(connectionString: string, options?: PoolOptions): MappedDbInstance<T>;
@@ -59,6 +61,7 @@ type DbOptions<T> = {
59
61
 
60
62
  interface Connectors {
61
63
  http(url: string): Pool;
64
+ d1(database: D1Database): Pool;
62
65
  postgres(connectionString: string, options?: PoolOptions): Pool;
63
66
  sqlite(connectionString: string, options?: PoolOptions): Pool;
64
67
  sap(connectionString: string, options?: PoolOptions): Pool;
@@ -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,10 +30,6 @@ 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
 
@@ -46,67 +38,63 @@ function newDatabase(connectionString, poolOptions) {
46
38
  let transaction = newTransaction(domain, pool, options);
47
39
  await new Promise(transaction)
48
40
  .then(begin)
49
- .then(fn)
41
+ .then(() => fn(domain))
50
42
  .then((res) => result = res)
51
- .then(c.commit)
52
- .then(null, c.rollback);
43
+ .then(() => c.commit(domain))
44
+ .then(null, (e) => c.rollback(domain, e));
53
45
  return result;
54
46
  }
55
47
 
56
48
  function begin() {
57
- return _begin(options?.readonly);
49
+ return _begin(domain, options);
58
50
  }
59
51
 
60
52
  function run() {
61
53
  let p;
62
54
  let transaction = newTransaction(domain, pool, options);
63
- if (useHook())
64
- p = new Promise(transaction);
65
- else
66
- p = new promise(transaction);
55
+ p = new Promise(transaction);
67
56
 
68
57
  return p.then(begin);
69
58
  }
70
59
 
71
60
  };
72
61
 
73
- c.createTransaction = function() {
62
+ c.createTransaction = function(options) {
74
63
  let domain = createDomain();
75
64
  let transaction = newTransaction(domain, pool);
76
- let p = domain.run(() => new Promise(transaction).then(_begin));
65
+ let p = domain.run(() => new Promise(transaction).then(begin));
77
66
 
78
67
  function run(fn) {
79
68
  return p.then(domain.run.bind(domain, fn));
80
69
  }
81
- return run;
82
- };
83
70
 
84
- c.bindTransaction = function() {
85
- // @ts-ignore
86
- var domain = process.domain;
87
- let p = domain.run(() => true);
88
-
89
- function run(fn) {
90
- return p.then(domain.run.bind(domain, fn));
71
+ function begin() {
72
+ return _begin(domain, options);
91
73
  }
74
+
75
+ run.rollback = rollback.bind(null, domain);
76
+ run.commit = commit.bind(null, domain);
77
+
92
78
  return run;
79
+
80
+
93
81
  };
94
82
 
95
83
  c.query = function(query) {
96
84
  let domain = createDomain();
97
85
  let transaction = newTransaction(domain, pool);
98
86
  let p = domain.run(() => new Promise(transaction)
99
- .then(() => setSessionSingleton('changes', []))
100
- .then(() => doQuery(query).then(onResult, onError)));
87
+ .then(() => setSessionSingleton(domain, 'changes', []))
88
+ .then(() => doQuery(domain, query).then(onResult, onError)));
101
89
  return p;
102
90
 
103
91
  function onResult(result) {
104
- releaseDbClient();
92
+ releaseDbClient(domain);
105
93
  return result;
106
94
  }
107
95
 
108
96
  function onError(e) {
109
- releaseDbClient();
97
+ releaseDbClient(domain);
110
98
  throw e;
111
99
  }
112
100
  };
@@ -1,5 +1,5 @@
1
+ const promisify = require('node:util').promisify;
1
2
  var pools = require('../pools');
2
- var promise = require('../table/promise');
3
3
  var end = require('./pool/end');
4
4
  var newGenericPool = require('./pool/newGenericPool');
5
5
  var newId = require('../newId');
@@ -11,7 +11,7 @@ function newPool(connectionString, poolOptions) {
11
11
  var 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,14 @@ var wrapQuery = require('./wrapQuery');
2
2
  var encodeBoolean = require('../tedious/encodeBoolean');
3
3
  var deleteFromSql = require('../tedious/deleteFromSql');
4
4
  var selectForUpdateSql = require('../tedious/selectForUpdateSql');
5
- var outputInsertedSql = require('../tedious/outputInsertedSql');
6
5
  const limitAndOffset = require('../tedious/limitAndOffset');
7
6
  const formatDateOut = require('../tedious/formatDateOut');
7
+ const formatJSONOut = require('../tedious/formatJSONOut');
8
8
  const insertSql = require('../tedious/insertSql');
9
9
  const insert = require('../tedious/insert');
10
+ const quote = require('../tedious/quote');
10
11
 
11
- function newResolveTransaction(domain, pool, { readonly } = {}) {
12
+ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
12
13
  var rdb = {poolFactory: pool};
13
14
  if (!pool.connect) {
14
15
  pool = pool();
@@ -19,9 +20,9 @@ function newResolveTransaction(domain, pool, { readonly } = {}) {
19
20
  rdb.decodeJSON = decodeJSON;
20
21
  rdb.encodeJSON = JSON.stringify;
21
22
  rdb.formatDateOut = formatDateOut;
23
+ rdb.formatJSONOut = formatJSONOut;
22
24
  rdb.deleteFromSql = deleteFromSql;
23
25
  rdb.selectForUpdateSql = selectForUpdateSql;
24
- rdb.outputInsertedSql = outputInsertedSql;
25
26
  rdb.insertSql = insertSql;
26
27
  rdb.insert = insert;
27
28
  rdb.lastInsertedIsSeparate = false;
@@ -40,7 +41,7 @@ function newResolveTransaction(domain, pool, { readonly } = {}) {
40
41
  caller.visitSqlite();
41
42
  };
42
43
  rdb.aggregateCount = 0;
43
- rdb.quote = (name) => `[${name}]`;
44
+ rdb.quote = quote;
44
45
 
45
46
  if (readonly) {
46
47
  rdb.dbClient = {
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable no-prototype-builtins */
3
3
  var EventEmitter = require('events').EventEmitter;
4
4
 
5
- var defaults = require('./defaults');
5
+ var defaults = require('../../poolDefaults');
6
6
  var genericPool = require('../../generic-pool');
7
7
  var mssql = require('msnodesqlv8');
8
8
 
@@ -1,6 +1,6 @@
1
1
  var format = 'delete %s from %s as %s%s';
2
2
  var util = require('util');
3
- const quote = require('../table/quote');
3
+ const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
6
  var name = quote(table._dbName);
@@ -5,16 +5,16 @@ let executeQueries = require('../table/executeQueries');
5
5
  let pushCommand = require('../table/commands/pushCommand');
6
6
 
7
7
 
8
- function insertDefault(table, row, options) {
8
+ function insertDefault(context, table, row, options) {
9
9
  let commands = [];
10
- let insertCmd = newInsertCommand(newInsertCommandCore, table, row, options);
10
+ let insertCmd = newInsertCommand(newInsertCommandCore.bind(null, context), table, row, options);
11
11
  insertCmd.disallowCompress = true;
12
- pushCommand(insertCmd);
12
+ pushCommand(context, insertCmd);
13
13
 
14
- let selectCmd = newGetLastInsertedCommand(table, row, insertCmd);
14
+ let selectCmd = newGetLastInsertedCommand(context, table, row, insertCmd);
15
15
  commands.push(selectCmd);
16
16
 
17
- return executeQueries(commands).then((result) => result[result.length - 1]);
17
+ return executeQueries(context, commands).then((result) => result[result.length - 1]);
18
18
 
19
19
  }
20
20
 
@@ -1,7 +1,6 @@
1
- const getSessionSingleton = require('../table/getSessionSingleton');
1
+ const quote = require('./quote');
2
2
 
3
- function insertSql(table, row, options) {
4
- const quote = getSessionSingleton('quote');
3
+ function insertSql(_context, table, row, options) {
5
4
  let columnNames = [];
6
5
  let regularColumnNames = [];
7
6
  let conflictColumnUpdateSql = '';
@@ -1,13 +1,12 @@
1
- const getSessionSingleton = require('../table/getSessionSingleton');
1
+ const quote = require('./quote');
2
2
 
3
- function lastInsertedSql(table, keyValues) {
4
- const quote = getSessionSingleton('quote');
3
+ function lastInsertedSql(context,table, keyValues) {
5
4
  return keyValues.map((value,i) => {
6
5
  let column = table._primaryColumns[i];
7
6
  if (value === undefined && column.tsType === 'NumberColumn')
8
7
  return `${quote(column._dbName)}=LAST_INSERT_ID()`;
9
8
  else
10
- return column.eq(value);
9
+ return column.eq(context, value);
11
10
  });
12
11
  }
13
12
 
@@ -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');
@@ -19,11 +15,11 @@ function newDatabase(connectionString, poolOptions) {
19
15
  throw new Error('Connection string cannot be empty');
20
16
  var pool;
21
17
  if (!poolOptions)
22
- pool = newPool.bind(null,connectionString, poolOptions);
18
+ pool = newPool.bind(null, connectionString, poolOptions);
23
19
  else
24
20
  pool = newPool(connectionString, poolOptions);
25
21
 
26
- let c = {poolFactory: pool, hostLocal, express};
22
+ let c = { poolFactory: pool, hostLocal, express };
27
23
 
28
24
  c.transaction = function(options, fn) {
29
25
  if ((arguments.length === 1) && (typeof options === 'function')) {
@@ -34,10 +30,7 @@ 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
- } else
33
+ else
41
34
  return domain.run(run);
42
35
 
43
36
  async function runInTransaction() {
@@ -45,67 +38,60 @@ function newDatabase(connectionString, poolOptions) {
45
38
  let transaction = newTransaction(domain, pool, options);
46
39
  await new Promise(transaction)
47
40
  .then(begin)
48
- .then(fn)
41
+ .then(() => fn(domain))
49
42
  .then((res) => result = res)
50
- .then(c.commit)
51
- .then(null, c.rollback);
43
+ .then(() => commit(domain))
44
+ .then(null, (e) => rollback(domain, e));
52
45
  return result;
53
46
  }
54
47
 
55
48
  function begin() {
56
- return _begin(options?.readonly);
49
+ return _begin(domain, options);
57
50
  }
58
51
 
59
52
  function run() {
60
53
  let p;
61
54
  let transaction = newTransaction(domain, pool, options);
62
- if (useHook())
63
- p = new Promise(transaction);
64
- else
65
- p = new promise(transaction);
55
+ p = new Promise(transaction);
66
56
 
67
57
  return p.then(begin);
68
58
  }
69
59
 
70
60
  };
71
61
 
72
- c.createTransaction = function() {
62
+ c.createTransaction = function(options) {
73
63
  let domain = createDomain();
74
64
  let transaction = newTransaction(domain, pool);
75
- let p = domain.run(() => new Promise(transaction).then(_begin));
65
+ let p = domain.run(() => new Promise(transaction).then(begin));
76
66
 
77
67
  function run(fn) {
78
- return p.then(domain.run.bind(domain, fn));
68
+ return p.then(() => fn(domain));
79
69
  }
70
+ run.rollback = rollback.bind(null, domain);
71
+ run.commit = commit.bind(null, domain);
80
72
  return run;
81
- };
82
73
 
83
- c.bindTransaction = function() {
84
- // @ts-ignore
85
- var domain = process.domain;
86
- let p = domain.run(() => true);
87
-
88
- function run(fn) {
89
- return p.then(domain.run.bind(domain, fn));
74
+ function begin() {
75
+ return _begin(domain, options);
90
76
  }
91
- return run;
92
77
  };
93
78
 
79
+
94
80
  c.query = function(query) {
95
81
  let domain = createDomain();
96
82
  let transaction = newTransaction(domain, pool);
97
83
  let p = domain.run(() => new Promise(transaction)
98
- .then(() => setSessionSingleton('changes', []))
99
- .then(() => doQuery(query).then(onResult, onError)));
84
+ .then(() => setSessionSingleton(domain, 'changes', []))
85
+ .then(() => doQuery(domain, query).then(onResult, onError)));
100
86
  return p;
101
87
 
102
88
  function onResult(result) {
103
- releaseDbClient();
89
+ releaseDbClient(domain);
104
90
  return result;
105
91
  }
106
92
 
107
93
  function onError(e) {
108
- releaseDbClient();
94
+ releaseDbClient(domain);
109
95
  throw e;
110
96
  }
111
97
  };
@@ -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('node:util').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
  }
@@ -6,8 +6,9 @@ const lastInsertedSql = require('./lastInsertedSql');
6
6
  const limitAndOffset = require('./limitAndOffset');
7
7
  const insertSql = require('./insertSql');
8
8
  const insert = require('./insert');
9
+ const quote = require('./quote');
9
10
 
10
- function newResolveTransaction(domain, pool, { readonly } = {}) {
11
+ function newResolveTransaction(domain, pool, { readonly = false } = {}) {
11
12
  var rdb = {poolFactory: pool};
12
13
  if (!pool.connect) {
13
14
  pool = pool();
@@ -28,8 +29,7 @@ function newResolveTransaction(domain, pool, { readonly } = {}) {
28
29
  caller.visitMySql();
29
30
  };
30
31
  rdb.aggregateCount = 0;
31
- rdb.quote = (name) => `\`${name}\``;
32
-
32
+ rdb.quote = quote;
33
33
 
34
34
  if (readonly) {
35
35
  rdb.dbClient = {
@@ -1,8 +1,7 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable no-prototype-builtins */
3
3
  var EventEmitter = require('events').EventEmitter;
4
-
5
- var defaults = require('./defaults');
4
+ var defaults = require('../../poolDefaults');
6
5
  var genericPool = require('../../generic-pool');
7
6
  var mysql = require('mysql2');
8
7
 
@@ -16,7 +15,7 @@ function newGenericPool(connectionString, poolOptions) {
16
15
  max: poolOptions.size || poolOptions.poolSize || defaults.poolSize,
17
16
  idleTimeoutMillis: poolOptions.idleTimeout || defaults.poolIdleTimeout,
18
17
  reapIntervalMillis: poolOptions.reapIntervalMillis || defaults.reapIntervalMillis,
19
- log: poolOptions.log || defaults.poolLog,
18
+ log: poolOptions.log,
20
19
  create: function(cb) {
21
20
  var innerPool = mysql.createPool(connectionString);
22
21
  return cb(null, innerPool);
@@ -0,0 +1 @@
1
+ module.exports = (name) => `\`${name}\``;
@@ -4,8 +4,7 @@ function newImmutable(fn) {
4
4
  return run;
5
5
 
6
6
  function run() {
7
- var args = [].slice.call(arguments);
8
- return _run(args);
7
+ return _run([...arguments]);
9
8
  }
10
9
 
11
10
  function runFirst(args) {
@@ -1,6 +1,6 @@
1
1
  var format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
2
2
  var util = require('util');
3
- const quote = require('../table/quote');
3
+ const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
6
  var name = quote(table._dbName);
@@ -1,4 +1,4 @@
1
- const quote = require('../table/quote');
1
+ const quote = require('./quote');
2
2
 
3
3
  function formatDateColumn(column, alias) {
4
4
  return `TO_CHAR(${alias}.${quote(column._dbName)}, 'YYYY-MM-DD"T"HH24:MI:SS.FF3')`;
@@ -4,17 +4,17 @@ const setSessionSingleton = require('../table/setSessionSingleton');
4
4
  const newGetLastInsertedCommand = require('../table/commands/newGetLastInsertedCommand');
5
5
  const executeQueries = require('../table/executeQueries');
6
6
 
7
- function insert(table, row, options) {
7
+ function insert(context, table, row, options) {
8
8
 
9
9
  return new Promise((res, rej) => {
10
- const cmd = newInsertCommand(newInsertCommandCore, table, row, options);
10
+ const cmd = newInsertCommand(newInsertCommandCore.bind(null, context), table, row, options);
11
11
  cmd.disallowCompress = true;
12
- executeQueries([cmd]).then((result) => result[0]).then(onResult).then(res, rej);
12
+ executeQueries(context, [cmd]).then((result) => result[0]).then(onResult).then(res, rej);
13
13
 
14
14
  function onResult([result]) {
15
- setSessionSingleton('lastRowid', result.lastRowid);
16
- const selectCmd = newGetLastInsertedCommand(table, row, cmd);
17
- return executeQueries([selectCmd]).then((result) => res(result[0]));
15
+ setSessionSingleton(context, 'lastRowid', result.lastRowid);
16
+ const selectCmd = newGetLastInsertedCommand(context, table, row, cmd);
17
+ return executeQueries(context, [selectCmd]).then((result) => res(result[0]));
18
18
  }
19
19
 
20
20
  });
@@ -1,12 +1,11 @@
1
- let outputInsertedSql = require('./outputInsertedSql');
2
1
  let mergeSql = require('./mergeSql');
3
- const getSessionSingleton = require('../table/getSessionSingleton');
2
+ const quote = require('./quote');
4
3
 
5
- function getSqlTemplate(_table, _row, options) {
4
+ function getSqlTemplate(_context, _table, _row, options) {
6
5
  if (hasConcurrency(_table, options) && hasColumns())
7
- return mergeSql.apply(null, arguments);
6
+ return mergeSql.apply(null, [...arguments].slice(1));
8
7
  else
9
- return insertSql.apply(null, arguments);
8
+ return insertSql.apply(null, [...arguments].slice(1));
10
9
 
11
10
  function hasColumns() {
12
11
  for(let p in _row) {
@@ -27,7 +26,6 @@ function hasConcurrency(table,options) {
27
26
  }
28
27
 
29
28
  function insertSql(table, row) {
30
- const quote = getSessionSingleton('quote');
31
29
  let columnNames = [];
32
30
  let regularColumnNames = [];
33
31
  let values = [];
@@ -35,9 +33,9 @@ function insertSql(table, row) {
35
33
  addDiscriminators();
36
34
  addColumns();
37
35
  if (columnNames.length === 0)
38
- sql += `${outputInserted()} (${quote(table._primaryColumns[0]._dbName)}) VALUES(DEFAULT)`;
36
+ sql += ` (${quote(table._primaryColumns[0]._dbName)}) VALUES(DEFAULT)`;
39
37
  else
40
- sql = sql + '('+ columnNames.join(',') + ')' + outputInserted() + 'VALUES (' + values.join(',') + ')';
38
+ sql = sql + '('+ columnNames.join(',') + ')' + ' VALUES (' + values.join(',') + ')';
41
39
  return sql;
42
40
 
43
41
  function addDiscriminators() {
@@ -65,12 +63,6 @@ function insertSql(table, row) {
65
63
  }
66
64
  }
67
65
 
68
-
69
- function outputInserted() {
70
-
71
- return ' ' + outputInsertedSql(table) + ' ';
72
- }
73
-
74
66
  }
75
67
 
76
68
  module.exports = getSqlTemplate;