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
@@ -9,7 +9,7 @@ var setSessionSingleton = require('../setSessionSingleton');
9
9
 
10
10
  function newManyCache(joinRelation) {
11
11
  var c = {};
12
- var key = newId();
12
+ var key;
13
13
 
14
14
  c.tryAdd = function(context, parent, child) {
15
15
  c.getInnerCache(context).tryAdd(parent, child);
@@ -25,10 +25,11 @@ function newManyCache(joinRelation) {
25
25
  };
26
26
 
27
27
  c.getInnerCache = function(context) {
28
- var cache = getSessionSingleton(context, key);
28
+ const theKey = negotiateKey();
29
+ var cache = getSessionSingleton(context, theKey);
29
30
  if (!cache) {
30
31
  cache = newCacheCore(joinRelation);
31
- setSessionSingleton(context, key, cache);
32
+ setSessionSingleton(context, theKey, cache);
32
33
  fillCache(context);
33
34
  synchronizeAdded(context, c.tryAdd.bind(null, context), joinRelation);
34
35
  synchronizeRemoved(context, c.tryRemove.bind(null, context), joinRelation);
@@ -49,6 +50,13 @@ function newManyCache(joinRelation) {
49
50
  }
50
51
  }
51
52
 
53
+ function negotiateKey() {
54
+ if (key)
55
+ return key;
56
+ key = newId();
57
+ return key;
58
+
59
+ }
52
60
 
53
61
 
54
62
  return c;
@@ -1,7 +1,5 @@
1
1
  var negotiateQueryContext = require('./negotiateQueryContext');
2
2
  var decodeDbRow = require('./decodeDbRow');
3
- var nextDbRowToRow = _nextDbRowToRow;
4
-
5
3
 
6
4
  function dbRowToRow(context, span, dbRow) {
7
5
  var table = span.table;
@@ -22,12 +20,12 @@ function dbRowToRow(context, span, dbRow) {
22
20
  var c = {};
23
21
 
24
22
  c.visitOne = function(leg) {
25
- nextDbRowToRow(context, leg.span, dbRow);
23
+ dbRowToRow(context, leg.span, dbRow);
26
24
  leg.expand(row);
27
25
  };
28
26
 
29
27
  c.visitJoin = function(leg) {
30
- nextDbRowToRow(context, leg.span, dbRow);
28
+ dbRowToRow(context, leg.span, dbRow);
31
29
  leg.expand(row);
32
30
  };
33
31
 
@@ -43,9 +41,4 @@ function dbRowToRow(context, span, dbRow) {
43
41
  return row;
44
42
  }
45
43
 
46
- function _nextDbRowToRow(context, span, dbRow) {
47
- nextDbRowToRow = require('./dbRowToRow');
48
- nextDbRowToRow(context, span, dbRow);
49
- }
50
-
51
44
  module.exports = dbRowToRow;
@@ -1,5 +1,3 @@
1
- var nextRemoveFromCache = _nextRemoveFromCache;
2
-
3
1
  function removeFromCache(context, row, strategy, table) {
4
2
  if (Array.isArray(row)) {
5
3
  removeManyRows();
@@ -10,7 +8,7 @@ function removeFromCache(context, row, strategy, table) {
10
8
 
11
9
  function removeManyRows() {
12
10
  row.forEach( function(rowToRemove) {
13
- nextRemoveFromCache(context, rowToRemove, strategy, table);
11
+ removeFromCache(context, rowToRemove, strategy, table);
14
12
  });
15
13
  }
16
14
 
@@ -19,15 +17,10 @@ function removeFromCache(context, row, strategy, table) {
19
17
  for (var relationName in strategy) {
20
18
  var relation = relations[relationName];
21
19
  var rows = relation.getRowsSync(row);
22
- nextRemoveFromCache(context, rows, strategy[relationName], relation.childTable);
20
+ removeFromCache(context, rows, strategy[relationName], relation.childTable);
23
21
  }
24
22
  table._cache.tryRemove(context, row);
25
23
  }
26
24
  }
27
25
 
28
- function _nextRemoveFromCache(context, row, strategy, table) {
29
- nextRemoveFromCache = require('./removeFromCache');
30
- nextRemoveFromCache(context, row, strategy, table);
31
- }
32
-
33
26
  module.exports = removeFromCache;
@@ -1,4 +1,3 @@
1
- let util = require('util');
2
1
  let updateField = require('../updateField');
3
2
  let newEmitEvent = require('../../emitEvent');
4
3
  let extractStrategy = require('./toDto/extractStrategy');
@@ -204,12 +203,6 @@ function newDecodeDbRow(table, dbRow, filteredAliases, shouldValidate, isInsert)
204
203
  return this;
205
204
  };
206
205
 
207
-
208
- Row.prototype[util.inspect.custom] = function() {
209
- let dtos = toDto(undefined, table, this, new Set());
210
- return util.inspect(dtos, { compact: false, colors: true });
211
- };
212
-
213
206
  function decodeDbRow(context, row) {
214
207
  for (let i = 0; i < numberOfColumns; i++) {
215
208
  let index = offset + i;
@@ -1,5 +1,3 @@
1
- let extractSubStrategy = _extractSubStrategy;
2
-
3
1
  //either..
4
2
  //strategy, table
5
3
  //or..
@@ -21,7 +19,7 @@ function extractStrategy(_strategyOrTable, _optinonalTable) {
21
19
  visitor.visitJoin = function() { };
22
20
 
23
21
  visitor.visitMany = function(relation) {
24
- strategy[relationName] = extractSubStrategy(relation.childTable);
22
+ strategy[relationName] = extractStrategy(relation.childTable);
25
23
  };
26
24
 
27
25
  visitor.visitOne = visitor.visitMany;
@@ -33,9 +31,5 @@ function extractStrategy(_strategyOrTable, _optinonalTable) {
33
31
  return strategy;
34
32
  }
35
33
 
36
- function _extractSubStrategy(table) {
37
- extractSubStrategy = require('./extractStrategy');
38
- return extractSubStrategy(table);
39
- }
40
34
 
41
35
  module.exports = extractStrategy;
@@ -1,11 +1,6 @@
1
- const process = require('node:process');
2
-
3
1
  function tryGetSessionContext(context) {
4
2
  if (context)
5
3
  return context.rdb;
6
- else
7
- // @ts-ignore
8
- return process.domain && process.domain.rdb;
9
4
  }
10
5
 
11
6
  module.exports = tryGetSessionContext;
package/src/table.js CHANGED
@@ -14,8 +14,6 @@ const newContext = require('./newObject');
14
14
  const insert = require('./table/insert');
15
15
  const _delete = require('./table/delete');
16
16
  const cascadeDelete = require('./table/cascadeDelete');
17
- const createReadStream = require('./table/createReadStream');
18
- const createJSONReadStream = require('./table/createJSONReadStream');
19
17
  const patchTable = require('./patchTable');
20
18
  const newEmitEvent = require('./emitEvent');
21
19
  const hostLocal = require('./hostLocal');
@@ -150,8 +148,6 @@ function _new(tableName) {
150
148
  };
151
149
 
152
150
  table.deleteCascade = table.cascadeDelete;
153
- table.createReadStream = createReadStream.bind(null, table); //legacy
154
- table.createJSONReadStream = createJSONReadStream.bind(null, table); //legacy
155
151
  table.exclusive = function() {
156
152
  table._exclusive = true;
157
153
  return table;
@@ -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;
@@ -11,7 +11,7 @@ function newQuery(context, table, filter, span, alias) {
11
11
  var limit = extractLimit(context, span);
12
12
  var offset = limitAndOffset(span);
13
13
 
14
- var subQueries = newSubQueries(context, table, span, alias);
14
+ var subQueries = newSubQueries(newQuery, context, table, span, alias);
15
15
  return newSingleQuery(context, table, filter, span, alias, subQueries, orderBy, limit, offset);
16
16
  }
17
17
 
@@ -1,7 +1,6 @@
1
- var newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('../../newQueryCore');
1
+ const newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
3
2
 
4
- function joinLegToQuery(context, parentAlias, leg, _legNo) {
3
+ function joinLegToQuery(newQuery, context, parentAlias, leg, _legNo) {
5
4
  var childAlias = parentAlias + leg.name;
6
5
  var span = leg.span;
7
6
  var parentTable = leg.table;
@@ -1,7 +1,6 @@
1
- var newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('../../newQueryCore');
1
+ const newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
3
2
 
4
- function manyLegToQuery(context, rightAlias, leg, _legNo) {
3
+ function manyLegToQuery(newQuery, context, rightAlias, leg, _legNo) {
5
4
  var leftAlias = rightAlias + leg.name;
6
5
  var span = leg.span;
7
6
  var rightTable = leg.table;
@@ -1,19 +1,18 @@
1
- var newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
2
- var newQuery = require('../../newQueryCore');
3
- var newParameterized = require('../../../../table/query/newParameterized');
4
- var util = require('util');
1
+ const newShallowJoinSql = require('../../../../table/query/singleQuery/joinSql/newShallowJoinSqlCore');
2
+ const newParameterized = require('../../../../table/query/newParameterized');
3
+ const formatString = require('../../../../format');
5
4
 
6
- function oneLegToQuery(context, rightAlias, leg, _legNo) {
7
- var leftAlias = rightAlias + leg.name;
8
- var span = leg.span;
9
- var rightTable = leg.table;
10
- var rightColumns = rightTable._primaryColumns;
11
- var leftColumns = leg.columns;
5
+ function oneLegToQuery(newQuery, context, rightAlias, leg, _legNo) {
6
+ let leftAlias = rightAlias + leg.name;
7
+ let span = leg.span;
8
+ let rightTable = leg.table;
9
+ let rightColumns = rightTable._primaryColumns;
10
+ let leftColumns = leg.columns;
12
11
 
13
- var filter = newShallowJoinSql(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, leg.span.where);
14
- var query = newQuery(context, span.table, filter, span, leftAlias);
15
- var sql = 'SELECT TOP 1' + query.sql().substring(6);
16
- return newParameterized(util.format('JSON_QUERY((%s FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER)) "%s"', sql, leg.name), query.parameters);
12
+ let filter = newShallowJoinSql(context, rightTable, leftColumns, rightColumns, leftAlias, rightAlias, leg.span.where);
13
+ let query = newQuery(context, span.table, filter, span, leftAlias);
14
+ let sql = 'SELECT TOP 1' + query.sql().substring(6);
15
+ return newParameterized(formatString('JSON_QUERY((%s FOR JSON PATH, INCLUDE_NULL_VALUES, WITHOUT_ARRAY_WRAPPER)) "%s"', sql, leg.name), query.parameters);
17
16
  }
18
17
 
19
18
  module.exports = oneLegToQuery;
@@ -1,21 +1,21 @@
1
- var joinLegToQuery = _joinLegToQuery;
2
- var oneLegToQuery = _oneLegToQuery;
3
- var manyLegToQuery = _manyLegToQuery;
4
- var newParameterized = require('../../../table/query/newParameterized');
1
+ const newParameterized = require('../../../table/query/newParameterized');
2
+ const joinLegToQuery = require('./newSubQueries/joinLegToQuery');
3
+ const oneLegToQuery = require('./newSubQueries/oneLegToQuery');
4
+ const manyLegToQuery = require('./newSubQueries/manyLegToQuery');
5
5
 
6
- function newSubQueries(context, _table, span, alias) {
6
+ function newSubQueries(newQuery, context, _table, span, alias) {
7
7
  var result = newParameterized('', []);
8
8
  var c = {};
9
9
  var _legNo;
10
10
 
11
11
  c.visitJoin = function(leg) {
12
- result = result.append(',').append(joinLegToQuery(context, alias, leg, _legNo));
12
+ result = result.append(',').append(joinLegToQuery(newQuery, context, alias, leg, _legNo));
13
13
  };
14
14
  c.visitOne = function(leg) {
15
- result = result.append(',').append(oneLegToQuery(context, alias, leg, _legNo));
15
+ result = result.append(',').append(oneLegToQuery(newQuery, context, alias, leg, _legNo));
16
16
  };
17
17
  c.visitMany = function(leg) {
18
- result = result.append(',').append(manyLegToQuery(context, alias, leg, _legNo));
18
+ result = result.append(',').append(manyLegToQuery(newQuery, context, alias, leg, _legNo));
19
19
  };
20
20
 
21
21
  span.legs.forEach(onEachLeg);
@@ -28,21 +28,4 @@ function newSubQueries(context, _table, span, alias) {
28
28
  return result;
29
29
  }
30
30
 
31
- function _joinLegToQuery() {
32
- joinLegToQuery = require('./newSubQueries/joinLegToQuery');
33
- return joinLegToQuery.apply(null, arguments);
34
- }
35
-
36
- function _oneLegToQuery() {
37
- oneLegToQuery = require('./newSubQueries/oneLegToQuery');
38
- return oneLegToQuery.apply(null, arguments);
39
- }
40
-
41
- function _manyLegToQuery() {
42
- manyLegToQuery = require('./newSubQueries/manyLegToQuery');
43
- return manyLegToQuery.apply(null, arguments);
44
- }
45
-
46
-
47
-
48
31
  module.exports = newSubQueries;
@@ -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');
@@ -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) {
@@ -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,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;
@@ -1,102 +0,0 @@
1
- var extractFilter = require('./query/extractFilter');
2
- var cloneStrategy = require('./cloneStrategy');
3
- var defaultBatchSize = 200;
4
- var Readable = require('stream').Readable;
5
- var createBatchFilter = require('./readStreamDefault/createBatchFilter');
6
-
7
- function createReadStream(table, db, filter, strategy, streamOptions) {
8
- filter = extractFilter(filter);
9
- var batchFilter;
10
- strategy = cloneStrategy(strategy);
11
- calculateOrderBy();
12
- streamOptions = streamOptions || {};
13
- var batchSize = streamOptions.batchSize || defaultBatchSize;
14
- batchSize = (batchSize + 1) / 2 >> 0;
15
- var maxRows = strategy.limit;
16
- var currentRowCount = 0;
17
- var busy;
18
- var waitingforMore;
19
- var dtos = [];
20
- var lastDto;
21
- var done;
22
-
23
- var stream = Readable({ objectMode: true });
24
- stream._read = function() {
25
- waitingforMore = true;
26
- if (!busy) {
27
- if (dtos.length > 0)
28
- negotiatePushStream();
29
- else
30
- getDtos();
31
- }
32
- };
33
- if (process.domain)
34
- process.domain.add(stream);
35
-
36
- function getDtos() {
37
- busy = true;
38
- return db.transaction(async () => {
39
- await getBatch()
40
- .then(onDtos);
41
- })
42
- .then(negotiatePushStream, onError);
43
- }
44
-
45
- function onDtos(result) {
46
- busy = false;
47
- currentRowCount += result.length;
48
- lastDto = result[result.length - 1];
49
- dtos = dtos.concat(result);
50
- if (currentRowCount >= maxRows || result.length < batchSize) {
51
- dtos.push(null);
52
- done = true;
53
- }
54
- }
55
-
56
- function negotiatePushStream() {
57
- if (dtos.length <= batchSize && !done)
58
- getDtos();
59
- if (!waitingforMore)
60
- return;
61
- waitingforMore = false;
62
- stream.push(dtos.shift());
63
- }
64
-
65
- function getBatch() {
66
- calculateLimit();
67
- calculateBatchFilter();
68
- return table.getMany(batchFilter, strategy);
69
- }
70
-
71
- function calculateLimit() {
72
- if (maxRows === undefined || maxRows === null)
73
- strategy.limit = batchSize;
74
- else {
75
- var rowsLeft = maxRows - currentRowCount;
76
- strategy.limit = Math.min(rowsLeft, batchSize);
77
- }
78
- }
79
-
80
- function calculateOrderBy() {
81
- strategy.orderBy = strategy.orderBy || [];
82
- if (typeof strategy.orderBy === 'string') {
83
- strategy.orderBy = [strategy.orderBy];
84
- }
85
- var primaryColumns = table._primaryColumns;
86
- for (var i = 0; i < primaryColumns.length; i++) {
87
- strategy.orderBy.push(primaryColumns[i].alias);
88
- }
89
- }
90
-
91
- function calculateBatchFilter() {
92
- batchFilter = createBatchFilter(table, filter, strategy, lastDto);
93
- }
94
-
95
- function onError(e) {
96
- stream.emit('error', e);
97
- }
98
-
99
- return stream;
100
- }
101
-
102
- module.exports = createReadStream;
@@ -1,17 +0,0 @@
1
- var createReadStreamCore = require('./createReadStreamCoreNative');
2
- var Stream = require('stream');
3
-
4
- function createReadStreamNative(table, db, filter, strategy, streamOptions) {
5
- var transformer = Stream.Transform({ objectMode: true });
6
- transformer._transform = function(chunk, _enc, cb) {
7
- let result = chunk.result;
8
- if (typeof result === 'string')
9
- result = JSON.parse(result);
10
- transformer.push(result);
11
- cb();
12
- };
13
-
14
- return createReadStreamCore(table, db, filter, strategy, transformer, streamOptions);
15
- }
16
-
17
- module.exports = createReadStreamNative;
@@ -1,7 +0,0 @@
1
- function extractLimit(span) {
2
- if (span.limit)
3
- return ' limit ' + span.limit;
4
- return '';
5
- }
6
-
7
- module.exports = extractLimit;