orange-orm 4.7.6 → 4.7.8-beta.0

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.
package/dist/index.mjs CHANGED
@@ -14833,11 +14833,10 @@ function requireWrapQuery$8 () {
14833
14833
 
14834
14834
  async function runQuery(query, onCompleted) {
14835
14835
  try {
14836
-
14836
+ log.emitQuery({ sql: query.sql(), parameters: query.parameters });
14837
14837
  const sql = replaceParamChar(query, query.parameters);
14838
14838
  let rdb = tryGetSessionContext(context);
14839
14839
  let transactionHandler = rdb.transactionHandler;
14840
- log.emitQuery({ sql, parameters: query.parameters });
14841
14840
 
14842
14841
  if (sql.length < 18 && query.parameters.length === 0) {
14843
14842
  if (sql === 'BEGIN TRANSACTION' || sql === 'BEGIN') {
@@ -15337,13 +15336,13 @@ function requireWrapQuery$7 () {
15337
15336
 
15338
15337
  function runQuery(query, onCompleted) {
15339
15338
  var params = query.parameters;
15339
+ log.emitQuery({sql: query.sql(), parameters: params});
15340
15340
  var sql = replaceParamChar(query, params);
15341
15341
  query = {
15342
15342
  text: sql,
15343
15343
  values: params,
15344
15344
  types: query.types
15345
15345
  };
15346
- log.emitQuery({sql, parameters: params});
15347
15346
 
15348
15347
  runOriginalQuery.call(connection, query, onInnerCompleted);
15349
15348
 
@@ -18270,27 +18269,28 @@ function requireWrapQuery$1 () {
18270
18269
  }
18271
18270
 
18272
18271
  function doQuery(query, onCompleted) {
18273
- const result = [];
18272
+ const results = []; // Array to hold multiple result sets
18273
+ let currentResult = []; // Current result set being built
18274
+ let hasResultSet = false; // Track if we're in an actual result set
18275
+
18276
+ log.emitQuery({ sql: query.sql(), parameters: query.parameters });
18274
18277
  const sql = replaceParamChar(query.sql(), query.parameters);
18275
18278
 
18276
18279
  // Transaction statements
18277
18280
  if (sql.length < 18 && query.parameters.length === 0) {
18278
18281
  if (sql === 'BEGIN TRANSACTION') {
18279
- log.emitQuery({ sql, parameters: [] });
18280
18282
  connection.beginTransaction((err) => {
18281
18283
  onCompleted(extractError(err), []);
18282
18284
  });
18283
18285
  return;
18284
18286
  }
18285
18287
  else if (sql === 'COMMIT') {
18286
- log.emitQuery({ sql, parameters: [] });
18287
18288
  connection.commitTransaction((err) => {
18288
18289
  onCompleted(extractError(err), []);
18289
18290
  });
18290
18291
  return;
18291
18292
  }
18292
18293
  else if (sql === 'ROLLBACK') {
18293
- log.emitQuery({ sql, parameters: [] });
18294
18294
  connection.rollbackTransaction((err) => {
18295
18295
  onCompleted(extractError(err), []);
18296
18296
  });
@@ -18299,9 +18299,8 @@ function requireWrapQuery$1 () {
18299
18299
  }
18300
18300
 
18301
18301
  let keys;
18302
- // Now we can safely create Request using CachedRequest
18303
18302
  var request = new CachedRequest(sql, onInnerCompleted);
18304
- const params = addParameters(request, query.parameters, CachedTypes);
18303
+ addParameters(request, query.parameters, CachedTypes);
18305
18304
 
18306
18305
  request.on('row', rows => {
18307
18306
  const tmp = {};
@@ -18311,24 +18310,65 @@ function requireWrapQuery$1 () {
18311
18310
  keys.forEach(cols => {
18312
18311
  tmp[cols] = rows[cols].value;
18313
18312
  });
18314
- result.push(tmp);
18313
+ currentResult.push(tmp);
18314
+ hasResultSet = true; // We're definitely in a result set
18315
+ });
18316
+
18317
+ // Handle column metadata - indicates a result set is starting
18318
+ request.on('columnMetadata', (_columns) => {
18319
+ hasResultSet = true; // A result set is starting (even if it ends up empty)
18320
+ });
18321
+
18322
+ // Handle end of each result set
18323
+ request.on('doneInProc', (_rowCount, _more) => {
18324
+ // End of a result set within a stored procedure
18325
+ // Add to results if we had a result set (even if empty)
18326
+ if (hasResultSet) {
18327
+ results.push(currentResult);
18328
+ currentResult = [];
18329
+ keys = null; // Reset keys for next result set
18330
+ hasResultSet = false; // Reset for next potential result set
18331
+ }
18332
+ });
18333
+
18334
+ request.on('doneProc', (_rowCount, _more) => {
18335
+ // End of stored procedure execution
18336
+ // Add to results if we had a result set (even if empty)
18337
+ if (hasResultSet) {
18338
+ results.push(currentResult);
18339
+ currentResult = [];
18340
+ hasResultSet = false; // Reset for next potential result set
18341
+ }
18315
18342
  });
18316
18343
 
18317
- log.emitQuery({ sql, parameters: params });
18318
18344
  connection.execSql(request);
18319
18345
 
18320
18346
  function onInnerCompleted(err) {
18321
18347
  if (err) {
18322
18348
  onCompleted(extractError(err));
18323
18349
  } else {
18324
- onCompleted(null, result);
18350
+ // If we have any remaining result set, add it
18351
+ if (hasResultSet) {
18352
+ results.push(currentResult);
18353
+ }
18354
+
18355
+ // Return based on number of actual result sets
18356
+ if (results.length === 0) {
18357
+ // No result sets - return empty array
18358
+ onCompleted(null, []);
18359
+ } else if (results.length === 1) {
18360
+ // Single result set - return as single-depth array (even if empty)
18361
+ onCompleted(null, results[0]);
18362
+ } else {
18363
+ // Multiple result sets - return as array of arrays
18364
+ onCompleted(null, results);
18365
+ }
18325
18366
  }
18326
18367
  }
18327
18368
  }
18328
18369
  }
18329
18370
 
18330
- // same helpers as before
18331
-
18371
+ // Helper functions remain the same
18332
18372
  function extractError(e) {
18333
18373
  if (e && e.errors) {
18334
18374
  return e.errors[0];
@@ -19697,8 +19737,8 @@ function requireWrapQuery () {
19697
19737
 
19698
19738
  function runQuery(query, onCompleted) {
19699
19739
  var params = query.parameters;
19740
+ log.emitQuery({sql: query.sql(), parameters: params});
19700
19741
  var sql = replaceParamChar(query, params);
19701
- log.emitQuery({ sql, parameters: params });
19702
19742
 
19703
19743
  runOriginalQuery.call(connection, sql, params, {
19704
19744
  fetchTypeHandler: function(metaData) {
package/docs/changelog.md CHANGED
@@ -1,4 +1,6 @@
1
1
  ## Changelog
2
+ __4.7.7__
3
+ Always do logging with question mark as placeholder instead of dialect specific placeholder.
2
4
  __4.7.6__
3
5
  Changed logging for SAP ASE.
4
6
  __4.7.5__
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orange-orm",
3
- "version": "4.7.6",
3
+ "version": "4.7.8-beta.0",
4
4
  "main": "./src/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "browser": "./dist/index.browser.mjs",
@@ -7,11 +7,10 @@ function wrapQuery(context, connection) {
7
7
 
8
8
  async function runQuery(query, onCompleted) {
9
9
  try {
10
-
10
+ log.emitQuery({ sql: query.sql(), parameters: query.parameters });
11
11
  const sql = replaceParamChar(query, query.parameters);
12
12
  let rdb = tryGetSessionContext(context);
13
13
  let transactionHandler = rdb.transactionHandler;
14
- log.emitQuery({ sql, parameters: query.parameters });
15
14
 
16
15
  if (sql.length < 18 && query.parameters.length === 0) {
17
16
  if (sql === 'BEGIN TRANSACTION' || sql === 'BEGIN') {
@@ -7,8 +7,8 @@ function wrapQuery(_context, connection) {
7
7
 
8
8
  function runQuery(query, onCompleted) {
9
9
  var params = query.parameters;
10
+ log.emitQuery({sql: query.sql(), parameters: params});
10
11
  var sql = replaceParamChar(query, params);
11
- log.emitQuery({ sql, parameters: params });
12
12
 
13
13
  runOriginalQuery.call(connection, sql, params, {
14
14
  fetchTypeHandler: function(metaData) {
@@ -7,13 +7,13 @@ function wrapQuery(_context, connection) {
7
7
 
8
8
  function runQuery(query, onCompleted) {
9
9
  var params = query.parameters;
10
+ log.emitQuery({sql: query.sql(), parameters: params});
10
11
  var sql = replaceParamChar(query, params);
11
12
  query = {
12
13
  text: sql,
13
14
  values: params,
14
15
  types: query.types
15
16
  };
16
- log.emitQuery({sql, parameters: params});
17
17
 
18
18
  runOriginalQuery.call(connection, query, onInnerCompleted);
19
19
 
@@ -22,27 +22,28 @@ function wrapQuery(_context, connection) {
22
22
  }
23
23
 
24
24
  function doQuery(query, onCompleted) {
25
- const result = [];
25
+ const results = []; // Array to hold multiple result sets
26
+ let currentResult = []; // Current result set being built
27
+ let hasResultSet = false; // Track if we're in an actual result set
28
+
29
+ log.emitQuery({ sql: query.sql(), parameters: query.parameters });
26
30
  const sql = replaceParamChar(query.sql(), query.parameters);
27
31
 
28
32
  // Transaction statements
29
33
  if (sql.length < 18 && query.parameters.length === 0) {
30
34
  if (sql === 'BEGIN TRANSACTION') {
31
- log.emitQuery({ sql, parameters: [] });
32
35
  connection.beginTransaction((err) => {
33
36
  onCompleted(extractError(err), []);
34
37
  });
35
38
  return;
36
39
  }
37
40
  else if (sql === 'COMMIT') {
38
- log.emitQuery({ sql, parameters: [] });
39
41
  connection.commitTransaction((err) => {
40
42
  onCompleted(extractError(err), []);
41
43
  });
42
44
  return;
43
45
  }
44
46
  else if (sql === 'ROLLBACK') {
45
- log.emitQuery({ sql, parameters: [] });
46
47
  connection.rollbackTransaction((err) => {
47
48
  onCompleted(extractError(err), []);
48
49
  });
@@ -51,9 +52,8 @@ function wrapQuery(_context, connection) {
51
52
  }
52
53
 
53
54
  let keys;
54
- // Now we can safely create Request using CachedRequest
55
55
  var request = new CachedRequest(sql, onInnerCompleted);
56
- const params = addParameters(request, query.parameters, CachedTypes);
56
+ addParameters(request, query.parameters, CachedTypes);
57
57
 
58
58
  request.on('row', rows => {
59
59
  const tmp = {};
@@ -63,24 +63,65 @@ function wrapQuery(_context, connection) {
63
63
  keys.forEach(cols => {
64
64
  tmp[cols] = rows[cols].value;
65
65
  });
66
- result.push(tmp);
66
+ currentResult.push(tmp);
67
+ hasResultSet = true; // We're definitely in a result set
68
+ });
69
+
70
+ // Handle column metadata - indicates a result set is starting
71
+ request.on('columnMetadata', (_columns) => {
72
+ hasResultSet = true; // A result set is starting (even if it ends up empty)
73
+ });
74
+
75
+ // Handle end of each result set
76
+ request.on('doneInProc', (_rowCount, _more) => {
77
+ // End of a result set within a stored procedure
78
+ // Add to results if we had a result set (even if empty)
79
+ if (hasResultSet) {
80
+ results.push(currentResult);
81
+ currentResult = [];
82
+ keys = null; // Reset keys for next result set
83
+ hasResultSet = false; // Reset for next potential result set
84
+ }
85
+ });
86
+
87
+ request.on('doneProc', (_rowCount, _more) => {
88
+ // End of stored procedure execution
89
+ // Add to results if we had a result set (even if empty)
90
+ if (hasResultSet) {
91
+ results.push(currentResult);
92
+ currentResult = [];
93
+ hasResultSet = false; // Reset for next potential result set
94
+ }
67
95
  });
68
96
 
69
- log.emitQuery({ sql, parameters: params });
70
97
  connection.execSql(request);
71
98
 
72
99
  function onInnerCompleted(err) {
73
100
  if (err) {
74
101
  onCompleted(extractError(err));
75
102
  } else {
76
- onCompleted(null, result);
103
+ // If we have any remaining result set, add it
104
+ if (hasResultSet) {
105
+ results.push(currentResult);
106
+ }
107
+
108
+ // Return based on number of actual result sets
109
+ if (results.length === 0) {
110
+ // No result sets - return empty array
111
+ onCompleted(null, []);
112
+ } else if (results.length === 1) {
113
+ // Single result set - return as single-depth array (even if empty)
114
+ onCompleted(null, results[0]);
115
+ } else {
116
+ // Multiple result sets - return as array of arrays
117
+ onCompleted(null, results);
118
+ }
77
119
  }
78
120
  }
79
121
  }
80
122
  }
81
123
 
82
- // same helpers as before
83
-
124
+ // Helper functions remain the same
84
125
  function extractError(e) {
85
126
  if (e && e.errors) {
86
127
  return e.errors[0];
@@ -132,4 +173,4 @@ function addParameters(request, params, TYPES) {
132
173
  }
133
174
  }
134
175
 
135
- module.exports = wrapQuery;
176
+ module.exports = wrapQuery;