orange-orm 4.5.0-beta.1 → 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 (107) hide show
  1. package/package.json +4 -3
  2. package/src/applyPatch.js +5 -2
  3. package/src/client/index.mjs +13524 -6469
  4. package/src/client/rollup.config.js +24 -4
  5. package/src/client/stringify.js +2 -9
  6. package/src/createDomain.js +2 -18
  7. package/src/d1/newPool.js +1 -1
  8. package/src/d1/newTransaction.js +1 -0
  9. package/src/d1/pool/newGenericPool.js +1 -14
  10. package/src/format.js +9 -0
  11. package/src/generic-pool.js +274 -313
  12. package/src/getManyDto.js +52 -21
  13. package/src/hostExpress/executePath.js +2 -1
  14. package/src/hostExpress.js +2 -7
  15. package/src/hostLocal.js +1 -1
  16. package/src/index.js +2 -1
  17. package/src/indexBrowser.js +39 -0
  18. package/src/mssql/newPool.js +1 -1
  19. package/src/mssql/pool/newGenericPool.js +0 -12
  20. package/src/mySql/deleteFromSql.js +4 -4
  21. package/src/mySql/newPool.js +1 -1
  22. package/src/mySql/pool/newGenericPool.js +0 -12
  23. package/src/newId.js +2 -1
  24. package/src/oracle/deleteFromSql.js +4 -4
  25. package/src/oracle/newInsertCommandCore.js +2 -2
  26. package/src/oracle/newPool.js +1 -1
  27. package/src/oracle/pool/newGenericPool.js +0 -12
  28. package/src/package.json +5 -0
  29. package/src/pg/deleteFromSql.js +4 -4
  30. package/src/pg/newPool.js +1 -1
  31. package/src/pg/pool/newPgPool.js +0 -12
  32. package/src/promisify.js +24 -0
  33. package/src/sap/deleteFromSql.js +2 -2
  34. package/src/sap/newPool.js +1 -1
  35. package/src/sqlite/deleteFromSql.js +4 -4
  36. package/src/sqlite/newPool.js +1 -1
  37. package/src/sqlite/pool/newGenericPool.js +0 -13
  38. package/src/table/column/negotiateRawSqlFilter.js +1 -72
  39. package/src/table/column/newBoolean.js +2 -53
  40. package/src/table/column/utils.js +113 -0
  41. package/src/table/column.js +6 -2
  42. package/src/table/commands/newDeleteCommand.js +1 -6
  43. package/src/table/commands/newInsertCommand.js +5 -2
  44. package/src/table/commands/newInsertCommandCore.js +11 -11
  45. package/src/table/deleteSessionContext.js +0 -3
  46. package/src/table/executeQueries/resolveExecuteQuery.js +0 -7
  47. package/src/table/newCascadeDeleteStrategy.js +1 -7
  48. package/src/table/newRelatedTable.js +4 -10
  49. package/src/table/query/newParameterized.js +8 -11
  50. package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
  51. package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
  52. package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
  53. package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +1 -6
  54. package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +1 -7
  55. package/src/table/query/singleQuery/newJoinSql.js +4 -4
  56. package/src/table/relatedTable/aggregate.js +0 -6
  57. package/src/table/relatedTable/all.js +1 -7
  58. package/src/table/relatedTable/any.js +1 -8
  59. package/src/table/relatedTable/none.js +1 -7
  60. package/src/table/relatedTable/where.js +0 -6
  61. package/src/table/relation/newManyCache.js +11 -3
  62. package/src/table/resultToRows/dbRowToRow.js +2 -9
  63. package/src/table/resultToRows/delete/removeFromCache.js +2 -9
  64. package/src/table/resultToRows/newDecodeDbRow.js +0 -7
  65. package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
  66. package/src/table/tryGetSessionContext.js +0 -5
  67. package/src/table.js +0 -4
  68. package/src/tedious/deleteFromSql.js +4 -4
  69. package/src/tedious/getManyDto/newQueryCore.js +1 -1
  70. package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +2 -3
  71. package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +2 -3
  72. package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
  73. package/src/tedious/getManyDto/query/newSubQueries.js +8 -25
  74. package/src/tedious/newPool.js +1 -1
  75. package/src/tedious/pool/newGenericPool.js +0 -12
  76. package/src/validateDeleteConflict.js +4 -2
  77. package/src/createDomain/negotiateForwardProperty.js +0 -23
  78. package/src/table/createJSONReadStream.js +0 -7
  79. package/src/table/createJSONReadStreamDefault.js +0 -33
  80. package/src/table/createJSONReadStreamNative.js +0 -31
  81. package/src/table/createReadStream.js +0 -24
  82. package/src/table/createReadStreamCoreNative.js +0 -40
  83. package/src/table/createReadStreamDefault.js +0 -102
  84. package/src/table/createReadStreamNative.js +0 -17
  85. package/src/table/readStream/extractLimit.js +0 -7
  86. package/src/table/readStream/extractOrderBy.js +0 -59
  87. package/src/table/readStream/mySql/newQuery.js +0 -16
  88. package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
  89. package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
  90. package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
  91. package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
  92. package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
  93. package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
  94. package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
  95. package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
  96. package/src/table/readStream/newQuery.js +0 -32
  97. package/src/table/readStream/newQueryStream.js +0 -8
  98. package/src/table/readStream/pg/newQuery.js +0 -8
  99. package/src/table/readStream/pg/newQueryCore.js +0 -17
  100. package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
  101. package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
  102. package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
  103. package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
  104. package/src/table/readStream/pg/query/newSubQueries.js +0 -47
  105. package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
  106. package/src/table/readStreamDefault/createBatchFilter.js +0 -39
  107. package/src/useHook.js +0 -9
package/src/getManyDto.js CHANGED
@@ -3,11 +3,12 @@ const newQuery = require('./getManyDto/newQuery');
3
3
  const negotiateRawSqlFilter = require('./table/column/negotiateRawSqlFilter');
4
4
  const strategyToSpan = require('./table/strategyToSpan');
5
5
  const executeQueries = require('./table/executeQueries');
6
+ const getSessionSingleton = require('./table/getSessionSingleton');
6
7
 
7
8
  async function getManyDto(context, table, filter, strategy, spanFromParent, updateParent) {
8
9
  filter = negotiateRawSqlFilter(context, filter, table);
9
10
  if (strategy && strategy.where) {
10
- let arg = typeof strategy.where === 'function' ? strategy.where(context, table) : strategy.where;//todo
11
+ let arg = typeof strategy.where === 'function' ? strategy.where(context, table) : strategy.where;
11
12
  filter = filter.and(context, arg);
12
13
  }
13
14
 
@@ -179,7 +180,6 @@ async function decode(context, strategy, span, rows, keys = rows.length > 0 ? Ob
179
180
  }
180
181
  }
181
182
  const column = columns[j];
182
- //todo
183
183
  outRow[column.alias] = column.decode(context, row[keys[j]]);
184
184
  }
185
185
 
@@ -190,8 +190,6 @@ async function decode(context, strategy, span, rows, keys = rows.length > 0 ? Ob
190
190
  }
191
191
 
192
192
  outRows[i] = outRow;
193
- // if (parentRows)
194
- // parentRows[i][parentProp] = outRow;
195
193
  if (updateParent)
196
194
  updateParent(outRow, i);
197
195
  if (shouldCreateMap) {
@@ -212,8 +210,6 @@ async function decode(context, strategy, span, rows, keys = rows.length > 0 ? Ob
212
210
  all.push(decodeManyRelations(context, strategy, span));
213
211
  all.push(decodeRelations2(context, strategy, span, rows, outRows, keys));
214
212
  }
215
- // decodeRelations2(strategy, span, rows, outRows, keys);
216
- // }
217
213
  else
218
214
  all.push(decodeRelations2(context, strategy, span, rows, outRows, keys));
219
215
 
@@ -242,64 +238,99 @@ async function decode(context, strategy, span, rows, keys = rows.length > 0 ? Ob
242
238
  }
243
239
 
244
240
  async function decodeManyRelations(context, strategy, span) {
241
+ const maxParameters = getSessionSingleton(context, 'maxParameters');
242
+ const maxRows = maxParameters
243
+ ? maxParameters * span.table._primaryColumns.length
244
+ : undefined;
245
+
245
246
  const promises = [];
246
247
  const c = {};
247
248
  c.visitJoin = () => { };
248
249
  c.visitOne = c.visitJoin;
249
250
 
251
+ // Helper function to split an array into chunks
252
+ function chunk(array, size) {
253
+ const results = [];
254
+ for (let i = 0; i < array.length; i += size) {
255
+ results.push(array.slice(i, i + size));
256
+ }
257
+ return results;
258
+ }
259
+
250
260
  c.visitMany = function(leg) {
251
261
  const name = leg.name;
252
262
  const table = span.table;
253
263
  const relation = table._relations[name];
254
264
  const rowsMap = span._rowsMap;
255
265
 
256
- const filter = createOneFilter(context, relation, span._ids);
257
266
  const extractKey = createExtractKey(leg);
258
267
  const extractFromMap = createExtractFromMap(rowsMap, table._primaryColumns);
259
268
 
260
- const p = getManyDto(context, relation.childTable, filter, strategy[name], leg.span, updateParent);
261
- // .then(subRows => {
262
- // for (let i = 0; i < subRows.length; i++) {
263
- // const key = extractKey(subRows[i]);
264
- // const parentRow = extractFromMap(key);
265
- // parentRow[name].push(subRows[i]);
266
- // }
267
- // });
269
+ // If maxRows is defined, chunk the IDs before calling getManyDto
270
+ if (maxRows) {
271
+ const chunkedIds = chunk(span._ids, maxRows);
272
+ for (const idsChunk of chunkedIds) {
273
+ const filter = createOneFilter(context, relation, idsChunk);
274
+ const p = getManyDto(
275
+ context,
276
+ relation.childTable,
277
+ filter,
278
+ strategy[name],
279
+ leg.span,
280
+ updateParent
281
+ );
282
+ promises.push(p);
283
+ }
284
+ } else {
285
+ // Otherwise, do the entire set in one go
286
+ const filter = createOneFilter(context, relation, span._ids);
287
+ const p = getManyDto(
288
+ context,
289
+ relation.childTable,
290
+ filter,
291
+ strategy[name],
292
+ leg.span,
293
+ updateParent
294
+ );
295
+ promises.push(p);
296
+ }
268
297
 
269
298
  function updateParent(subRow) {
270
299
  const key = extractKey(subRow);
271
300
  const parentRow = extractFromMap(key);
272
301
  parentRow[name].push(subRow);
273
302
  }
274
-
275
- promises.push(p);
276
303
  };
277
304
 
278
305
  function createExtractKey(leg) {
279
306
  if (leg.columns.length === 1) {
280
307
  const alias = leg.columns[0].alias;
281
308
  return (row) => row[alias];
282
- }
283
- else {
309
+ } else {
284
310
  const aliases = leg.columns.map(column => column.alias);
285
311
  return (row) => aliases.map(alias => row[alias]);
286
312
  }
287
313
  }
314
+
288
315
  function createExtractFromMap(map, primaryColumns) {
289
- if (primaryColumns.length === 1)
316
+ if (primaryColumns.length === 1) {
290
317
  return (key) => map.get(key);
291
- else
318
+ } else {
292
319
  return getFromMap.bind(null, map, primaryColumns);
320
+ }
293
321
  }
294
322
 
323
+ // Visit all legs
295
324
  span.legs.forEach(onEachLeg);
296
325
 
297
326
  function onEachLeg(leg) {
298
327
  leg.accept(c);
299
328
  }
300
329
 
330
+ // Wait until all promises resolve
301
331
  await Promise.all(promises);
302
332
  }
333
+
303
334
  async function decodeRelations2(context, strategy, span, rawRows, resultRows, keys) {
304
335
  const c = {};
305
336
  c.visitJoin = function(leg) {
@@ -93,7 +93,8 @@ function _executePath(context, ...rest) {
93
93
  if (isHttp)
94
94
  validateArgs(json.args[0]);
95
95
  const f = anyAllNone(context, x => parseFilter(json.args[0], x));
96
- f.isSafe = isSafe;
96
+ if(!('isSafe' in f))
97
+ f.isSafe = isSafe;
97
98
  return f;
98
99
  }
99
100
  else {
@@ -1,8 +1,8 @@
1
1
  const getTSDefinition = require('./getTSDefinition');
2
- let hostLocal = _hostLocal;
2
+ // let hostLocal = _hostLocal;
3
3
  const getMeta = require('./hostExpress/getMeta');
4
4
 
5
- function hostExpress(client, options = {}) {
5
+ function hostExpress(hostLocal, client, options = {}) {
6
6
  if ('db' in options && (options.db ?? undefined) === undefined || !client.db)
7
7
  throw new Error('No db specified');
8
8
  const dbOptions = { db: options.db || client.db };
@@ -117,9 +117,4 @@ function hostExpress(client, options = {}) {
117
117
  return handler;
118
118
  }
119
119
 
120
- function _hostLocal() {
121
- hostLocal = require('./hostLocal');
122
- return hostLocal.apply(null, arguments);
123
- }
124
-
125
120
  module.exports = hostExpress;
package/src/hostLocal.js CHANGED
@@ -104,7 +104,7 @@ function hostLocal() {
104
104
  }
105
105
 
106
106
  function express(client, options) {
107
- return hostExpress(client, options);
107
+ return hostExpress(hostLocal, client, options);
108
108
  }
109
109
 
110
110
  return c;
package/src/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  const hostExpress = require('./hostExpress');
2
+ const hostLocal = require('./hostLocal');
2
3
  const client = require('./client/index.js');
3
4
  const map = require('./client/map');
4
5
  let _mySql;
@@ -115,6 +116,6 @@ Object.defineProperty(connectViaPool, 'oracle', {
115
116
  }
116
117
  });
117
118
 
118
- connectViaPool.express = hostExpress;
119
+ connectViaPool.express = hostExpress.bind(null, hostLocal);
119
120
 
120
121
  module.exports = connectViaPool;
@@ -0,0 +1,39 @@
1
+ const hostExpress = require('./hostExpress');
2
+ const hostLocal = require('./hostLocal');
3
+ const client = require('./client/index.js');
4
+ const map = require('./client/map');
5
+ let _d1;
6
+
7
+ var connectViaPool = function() {
8
+ return client.apply(null, arguments);
9
+ };
10
+ connectViaPool.createPatch = client.createPatch;
11
+ connectViaPool.table = require('./table');
12
+ connectViaPool.filter = require('./emptyFilter');
13
+ connectViaPool.commit = require('./table/commit');
14
+ connectViaPool.rollback = require('./table/rollback');
15
+ connectViaPool.end = require('./pools').end;
16
+ connectViaPool.log = require('./table/log').registerLogger;
17
+ connectViaPool.on = require('./table/log').on;
18
+ connectViaPool.off = require('./table/log').off;
19
+ connectViaPool.query = require('./query');
20
+ connectViaPool.lock = require('./lock');
21
+ connectViaPool.schema = require('./pg/schema');
22
+ connectViaPool.map = map.bind(null, connectViaPool);
23
+
24
+ connectViaPool.http = function(url) {
25
+ return url;
26
+ };
27
+
28
+
29
+ Object.defineProperty(connectViaPool, 'd1', {
30
+ get: function() {
31
+ if (!_d1)
32
+ _d1 = require('./d1/newDatabase');
33
+ return _d1;
34
+ }
35
+ });
36
+
37
+ connectViaPool.express = hostExpress.bind(null, hostLocal);
38
+
39
+ module.exports = connectViaPool;
@@ -1,4 +1,4 @@
1
- const promisify = require('node:util').promisify;
1
+ const promisify = require('../promisify');
2
2
  var pools = require('../pools');
3
3
  var end = require('./pool/end');
4
4
  var newGenericPool = require('./pool/newGenericPool');
@@ -1,6 +1,5 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable no-prototype-builtins */
3
- var EventEmitter = require('events').EventEmitter;
4
3
 
5
4
  var defaults = require('../../poolDefaults');
6
5
  var genericPool = require('../../generic-pool');
@@ -31,20 +30,9 @@ function newGenericPool(connectionString, poolOptions) {
31
30
  client.close();
32
31
  }
33
32
  });
34
- //mixin EventEmitter to pool
35
- EventEmitter.call(pool);
36
- for(var key in EventEmitter.prototype) {
37
- if(EventEmitter.prototype.hasOwnProperty(key)) {
38
- pool[key] = EventEmitter.prototype[key];
39
- }
40
- }
41
33
  //monkey-patch with connect method
42
34
  pool.connect = function(cb) {
43
- var domain = process.domain;
44
35
  pool.acquire(function(err, client) {
45
- if(domain) {
46
- cb = domain.bind(cb);
47
- }
48
36
  if(err) return cb(err, null, function() {/*NOOP*/});
49
37
  client.poolCount++;
50
38
  cb(null, client, function(err) {
@@ -1,10 +1,10 @@
1
- var format = 'delete %s from %s as %s%s';
2
- var util = require('util');
1
+ const format = 'delete %s from %s as %s%s';
2
+ const formatString = require('../format');
3
3
  const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
- var name = quote(table._dbName);
6
+ const name = quote(table._dbName);
7
7
  alias = quote(alias);
8
- return util.format(format, alias, name, alias, whereSql);
8
+ return formatString(format, alias, name, alias, whereSql);
9
9
  }
10
10
  module.exports = deleteFromSql;
@@ -1,4 +1,4 @@
1
- const promisify = require('node:util').promisify;
1
+ const promisify = require('../promisify');
2
2
  const pools = require('../pools');
3
3
  const end = require('./pool/end');
4
4
  const newGenericPool = require('./pool/newGenericPool');
@@ -1,6 +1,5 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable no-prototype-builtins */
3
- var EventEmitter = require('events').EventEmitter;
4
3
  var defaults = require('../../poolDefaults');
5
4
  var genericPool = require('../../generic-pool');
6
5
  var mysql = require('mysql2');
@@ -35,20 +34,9 @@ function newGenericPool(connectionString, poolOptions) {
35
34
  client.end();
36
35
  }
37
36
  });
38
- //mixin EventEmitter to pool
39
- EventEmitter.call(pool);
40
- for(var key in EventEmitter.prototype) {
41
- if(EventEmitter.prototype.hasOwnProperty(key)) {
42
- pool[key] = EventEmitter.prototype[key];
43
- }
44
- }
45
37
  //monkey-patch with connect method
46
38
  pool.connect = function(cb) {
47
- var domain = process.domain;
48
39
  pool.acquire(function(err, client) {
49
- if(domain) {
50
- cb = domain.bind(cb);
51
- }
52
40
  if(err) return cb(err, null, function() {/*NOOP*/});
53
41
  client.poolCount++;
54
42
  cb(null, client, function(err) {
package/src/newId.js CHANGED
@@ -1 +1,2 @@
1
- module.exports = require('uuid').v4;
1
+ const { v4 : uuid} = require('uuid');
2
+ module.exports = uuid;
@@ -1,10 +1,10 @@
1
- var format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
2
- var util = require('util');
1
+ const format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
2
+ const formatString = require('../format');
3
3
  const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
- var name = quote(table._dbName);
6
+ const name = quote(table._dbName);
7
7
  alias = quote(alias);
8
- return util.format(format, name, name, alias, name, alias, whereSql);
8
+ return formatString(format, name, name, alias, name, alias, whereSql);
9
9
  }
10
10
  module.exports = deleteFromSql;
@@ -1,6 +1,6 @@
1
1
  var newParameterized = require('../table/query/newParameterized');
2
2
  var insertSql = require('./insertSql');
3
- var util = require('util');
3
+ const formatString = require('../format');
4
4
 
5
5
  function newInsertCommandCore(context,table, row, options = {}) {
6
6
  var parameters = [];
@@ -20,7 +20,7 @@ function newInsertCommandCore(context,table, row, options = {}) {
20
20
  }
21
21
  }
22
22
 
23
- var sql = util.format.apply(null, values);
23
+ var sql = formatString.apply(null, values);
24
24
  return newParameterized(sql, parameters);
25
25
  }
26
26
 
@@ -1,4 +1,4 @@
1
- const promisify = require('node:util').promisify;
1
+ const promisify = require('../promisify');
2
2
  const pools = require('../pools');
3
3
  const end = require('./pool/end');
4
4
  const newGenericPool = require('./pool/newGenericPool');
@@ -1,6 +1,5 @@
1
1
  // @ts-nocheck
2
2
  /* eslint-disable no-prototype-builtins */
3
- var EventEmitter = require('events').EventEmitter;
4
3
 
5
4
  var defaults = require('../../poolDefaults');
6
5
  var genericPool = require('../../generic-pool');
@@ -33,20 +32,9 @@ function newGenericPool(connectionString, poolOptions) {
33
32
  client.close();
34
33
  }
35
34
  });
36
- //mixin EventEmitter to pool
37
- EventEmitter.call(pool);
38
- for (var key in EventEmitter.prototype) {
39
- if (EventEmitter.prototype.hasOwnProperty(key)) {
40
- pool[key] = EventEmitter.prototype[key];
41
- }
42
- }
43
35
  //monkey-patch with connect method
44
36
  pool.connect = function(cb) {
45
- var domain = process.domain;
46
37
  pool.acquire(function(err, client) {
47
- if (domain) {
48
- cb = domain.bind(cb);
49
- }
50
38
  if (err) return cb(err, null, function() {/*NOOP*/ });
51
39
  client.poolCount++;
52
40
  cb(null, client, function(err) {
@@ -0,0 +1,5 @@
1
+ {
2
+ "dependencies": {
3
+ "uuid": "^11.0.5"
4
+ }
5
+ }
@@ -1,10 +1,10 @@
1
- var format = 'delete from %s %s%s';
2
- var util = require('util');
1
+ const format = 'delete from %s %s%s';
2
+ const formatString = require('../format');
3
3
  const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
- var name = quote(table._dbName);
6
+ const name = quote(table._dbName);
7
7
  alias = quote(alias);
8
- return util.format(format, name, alias, whereSql);
8
+ return formatString(format, name, alias, whereSql);
9
9
  }
10
10
  module.exports = deleteFromSql;
package/src/pg/newPool.js CHANGED
@@ -1,4 +1,4 @@
1
- const promisify = require('node:util').promisify;
1
+ const promisify = require('../promisify');
2
2
  const pools = require('../pools');
3
3
  const end = require('./pool/end');
4
4
  const newPgPool = require('./pool/newPgPool');
@@ -1,7 +1,6 @@
1
1
  /* eslint-disable no-prototype-builtins */
2
2
  //slightly modified code from github.com/brianc/node-postgres
3
3
  var log = require('../../table/log');
4
- var EventEmitter = require('events').EventEmitter;
5
4
 
6
5
  var defaults = require('../../poolDefaults');
7
6
  var genericPool = require('../../generic-pool');
@@ -55,20 +54,9 @@ function newPgPool(connectionString, poolOptions) {
55
54
  client.end();
56
55
  }
57
56
  });
58
- //mixin EventEmitter to pool
59
- EventEmitter.call(pool);
60
- for (var key in EventEmitter.prototype) {
61
- if (EventEmitter.prototype.hasOwnProperty(key)) {
62
- pool[key] = EventEmitter.prototype[key];
63
- }
64
- }
65
57
  //monkey-patch with connect method
66
58
  pool.connect = function(cb) {
67
- var domain = process.domain;
68
59
  pool.acquire(function(err, client) {
69
- if (domain) {
70
- cb = domain.bind(cb);
71
- }
72
60
  if (err) return cb(err, null, function() {
73
61
  /*NOOP*/
74
62
  });
@@ -0,0 +1,24 @@
1
+ function promisify(original) {
2
+ if (typeof original !== 'function') {
3
+ throw new TypeError('The "original" argument must be of type Function');
4
+ }
5
+
6
+ return function(...args) {
7
+ return new Promise((resolve, reject) => {
8
+ // Add the callback that Node-style APIs expect
9
+ function callback(err, ...values) {
10
+ if (err) {
11
+ return reject(err);
12
+ }
13
+ // If there's exactly one success value, return it;
14
+ // otherwise, return all values as an array.
15
+ return resolve(values.length > 1 ? values : values[0]);
16
+ }
17
+
18
+ // Call the original function, appending our callback
19
+ original.call(this, ...args, callback);
20
+ });
21
+ };
22
+ }
23
+
24
+ module.exports = promisify;
@@ -1,10 +1,10 @@
1
1
  var format = 'delete from %s from %s as %s %s';
2
- var util = require('util');
2
+ const formatString = require('../format');
3
3
  const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
6
  var name = quote(table._dbName);
7
7
  alias = quote(alias) ;
8
- return util.format(format, name, name, alias, whereSql);
8
+ return formatString(format, name, name, alias, whereSql);
9
9
  }
10
10
  module.exports = deleteFromSql;
@@ -1,4 +1,4 @@
1
- const promisify = require('node:util').promisify;
1
+ const promisify = require('../promisify');
2
2
  var pools = require('../pools');
3
3
  var end = require('./pool/end');
4
4
  var newGenericPool = require('../mssql/pool/newGenericPool');
@@ -1,10 +1,10 @@
1
- var format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
2
- var util = require('util');
1
+ const format = 'delete from %s where %s.rowId in (SELECT %s.rowId FROM %s %s%s)';
2
+ const formatString = require('../format');
3
3
  const quote = require('./quote');
4
4
 
5
5
  function deleteFromSql(table, alias, whereSql) {
6
- var name = quote(table._dbName);
6
+ const name = quote(table._dbName);
7
7
  alias = quote(alias);
8
- return util.format(format, name, name, alias, name, alias, whereSql);
8
+ return formatString(format, name, name, alias, name, alias, whereSql);
9
9
  }
10
10
  module.exports = deleteFromSql;
@@ -1,4 +1,4 @@
1
- const promisify = require('node:util').promisify;
1
+ const promisify = require('../promisify');
2
2
  const pools = require('../pools');
3
3
  const end = require('./pool/end');
4
4
  const newGenericPool = require('./pool/newGenericPool');
@@ -1,6 +1,4 @@
1
1
  /* eslint-disable no-prototype-builtins */
2
- var EventEmitter = require('events').EventEmitter;
3
-
4
2
  var defaults = require('../../poolDefaults');
5
3
 
6
4
  var genericPool = require('../../generic-pool');
@@ -29,20 +27,9 @@ function newGenericPool(connectionString, poolOptions) {
29
27
  client.close();
30
28
  }
31
29
  });
32
- //mixin EventEmitter to pool
33
- EventEmitter.call(pool);
34
- for(var key in EventEmitter.prototype) {
35
- if(EventEmitter.prototype.hasOwnProperty(key)) {
36
- pool[key] = EventEmitter.prototype[key];
37
- }
38
- }
39
30
  //monkey-patch with connect method
40
31
  pool.connect = function(cb) {
41
- var domain = process.domain;
42
32
  pool.acquire(function(err, client) {
43
- if(domain) {
44
- cb = domain.bind(cb);
45
- }
46
33
  if(err) return cb(err, null, function() {/*NOOP*/});
47
34
  client.poolCount++;
48
35
  cb(null, client, function(err) {
@@ -1,74 +1,3 @@
1
- let newParameterized = function() {
2
- newParameterized = require('../query/newParameterized');
3
- return newParameterized.apply(null, arguments);
4
- };
5
-
6
- let newBoolean = function() {
7
- newBoolean = require('./newBoolean');
8
- return newBoolean.apply(null, arguments);
9
- };
10
-
11
- function negotiateRawSqlFilter(context, filter, optionalTable, emptyArrayMeansFalse) {
12
- if (Array.isArray(filter) && filter.length === 0) {
13
- const sql = emptyArrayMeansFalse ? '1 = 2' : '1 = 1';
14
- return newBoolean(newParameterized(sql));
15
- }
16
- else if (Array.isArray(filter)) {
17
- let curFilter;
18
- let curObjectFilter;
19
- for (let i = 0; i < filter.length; i++) {
20
- let nextFilter = negotiateRawSqlFilter(context,filter[i], optionalTable);
21
- if (nextFilter.isObjectFilter)
22
- curObjectFilter = curObjectFilter ? curObjectFilter.or(context, nextFilter) : nextFilter;
23
- else
24
- curFilter = curFilter ? curFilter.and(context, nextFilter) : nextFilter;
25
- }
26
- if (curFilter && curObjectFilter)
27
- return curFilter.and(context, curObjectFilter);
28
- else if (curFilter)
29
- return curFilter;
30
- else
31
- return curObjectFilter;
32
- }
33
- else {
34
- let params = [];
35
- if (filter) {
36
- if (filter.and)
37
- return filter;
38
- if (filter.sql) {
39
- let sql = filter.sql;
40
- if (typeof filter.sql === 'function') {
41
- sql = filter.sql();
42
- }
43
- params.push(sql, filter.parameters);
44
- }
45
- else if (isObjectFilter(filter, optionalTable))
46
- return newObjectFilter(context, filter, optionalTable);
47
- else
48
- params = [filter];
49
- } else {
50
- params = [filter];
51
- }
52
-
53
- let parameterized = newParameterized.apply(null, params);
54
- return newBoolean(parameterized);
55
- }
56
- }
57
-
58
- function isObjectFilter(object, optionalTable) {
59
- return optionalTable && object;
60
- }
61
-
62
- function newObjectFilter(context, object, table) {
63
- let primaryColumns = table._primaryColumns;
64
- let filter;
65
- for (let i = 0; i < primaryColumns.length; i++) {
66
- let column = primaryColumns[i];
67
- let colFilter = column.equal(context, object[column.alias]);
68
- filter = filter ? filter.and(context, colFilter) : colFilter ;
69
- }
70
- filter.isObjectFilter = true;
71
- return filter;
72
- }
1
+ const { negotiateRawSqlFilter } = require('./utils');
73
2
 
74
3
  module.exports = negotiateRawSqlFilter;