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.
- package/package.json +4 -3
- package/src/applyPatch.js +5 -2
- package/src/client/index.mjs +13524 -6469
- package/src/client/rollup.config.js +24 -4
- package/src/client/stringify.js +2 -9
- package/src/createDomain.js +2 -18
- package/src/d1/newPool.js +1 -1
- package/src/d1/newTransaction.js +1 -0
- package/src/d1/pool/newGenericPool.js +1 -14
- package/src/format.js +9 -0
- package/src/generic-pool.js +274 -313
- package/src/getManyDto.js +52 -21
- package/src/hostExpress/executePath.js +2 -1
- package/src/hostExpress.js +2 -7
- package/src/hostLocal.js +1 -1
- package/src/index.js +2 -1
- package/src/indexBrowser.js +39 -0
- package/src/mssql/newPool.js +1 -1
- package/src/mssql/pool/newGenericPool.js +0 -12
- package/src/mySql/deleteFromSql.js +4 -4
- package/src/mySql/newPool.js +1 -1
- package/src/mySql/pool/newGenericPool.js +0 -12
- package/src/newId.js +2 -1
- package/src/oracle/deleteFromSql.js +4 -4
- package/src/oracle/newInsertCommandCore.js +2 -2
- package/src/oracle/newPool.js +1 -1
- package/src/oracle/pool/newGenericPool.js +0 -12
- package/src/package.json +5 -0
- package/src/pg/deleteFromSql.js +4 -4
- package/src/pg/newPool.js +1 -1
- package/src/pg/pool/newPgPool.js +0 -12
- package/src/promisify.js +24 -0
- package/src/sap/deleteFromSql.js +2 -2
- package/src/sap/newPool.js +1 -1
- package/src/sqlite/deleteFromSql.js +4 -4
- package/src/sqlite/newPool.js +1 -1
- package/src/sqlite/pool/newGenericPool.js +0 -13
- package/src/table/column/negotiateRawSqlFilter.js +1 -72
- package/src/table/column/newBoolean.js +2 -53
- package/src/table/column/utils.js +113 -0
- package/src/table/column.js +6 -2
- package/src/table/commands/newDeleteCommand.js +1 -6
- package/src/table/commands/newInsertCommand.js +5 -2
- package/src/table/commands/newInsertCommandCore.js +11 -11
- package/src/table/deleteSessionContext.js +0 -3
- package/src/table/executeQueries/resolveExecuteQuery.js +0 -7
- package/src/table/newCascadeDeleteStrategy.js +1 -7
- package/src/table/newRelatedTable.js +4 -10
- package/src/table/query/newParameterized.js +8 -11
- package/src/table/query/singleQuery/columnSql/joinLegToColumnSql.js +2 -15
- package/src/table/query/singleQuery/columnSql/newJoinedColumnSql.js +2 -25
- package/src/table/query/singleQuery/columnSql/sharedJoinUtils.js +37 -0
- package/src/table/query/singleQuery/joinSql/joinLegToJoinSql.js +1 -6
- package/src/table/query/singleQuery/joinSql/oneLegToJoinSql.js +1 -7
- package/src/table/query/singleQuery/newJoinSql.js +4 -4
- package/src/table/relatedTable/aggregate.js +0 -6
- package/src/table/relatedTable/all.js +1 -7
- package/src/table/relatedTable/any.js +1 -8
- package/src/table/relatedTable/none.js +1 -7
- package/src/table/relatedTable/where.js +0 -6
- package/src/table/relation/newManyCache.js +11 -3
- package/src/table/resultToRows/dbRowToRow.js +2 -9
- package/src/table/resultToRows/delete/removeFromCache.js +2 -9
- package/src/table/resultToRows/newDecodeDbRow.js +0 -7
- package/src/table/resultToRows/toDto/extractStrategy.js +1 -7
- package/src/table/tryGetSessionContext.js +0 -5
- package/src/table.js +0 -4
- package/src/tedious/deleteFromSql.js +4 -4
- package/src/tedious/getManyDto/newQueryCore.js +1 -1
- package/src/tedious/getManyDto/query/newSubQueries/joinLegToQuery.js +2 -3
- package/src/tedious/getManyDto/query/newSubQueries/manyLegToQuery.js +2 -3
- package/src/tedious/getManyDto/query/newSubQueries/oneLegToQuery.js +13 -14
- package/src/tedious/getManyDto/query/newSubQueries.js +8 -25
- package/src/tedious/newPool.js +1 -1
- package/src/tedious/pool/newGenericPool.js +0 -12
- package/src/validateDeleteConflict.js +4 -2
- package/src/createDomain/negotiateForwardProperty.js +0 -23
- package/src/table/createJSONReadStream.js +0 -7
- package/src/table/createJSONReadStreamDefault.js +0 -33
- package/src/table/createJSONReadStreamNative.js +0 -31
- package/src/table/createReadStream.js +0 -24
- package/src/table/createReadStreamCoreNative.js +0 -40
- package/src/table/createReadStreamDefault.js +0 -102
- package/src/table/createReadStreamNative.js +0 -17
- package/src/table/readStream/extractLimit.js +0 -7
- package/src/table/readStream/extractOrderBy.js +0 -59
- package/src/table/readStream/mySql/newQuery.js +0 -16
- package/src/table/readStream/mySql/query/newSingleQuery.js +0 -21
- package/src/table/readStream/mySql/query/newSubQueries/joinLegToQuery.js +0 -20
- package/src/table/readStream/mySql/query/newSubQueries/manyLegToQuery.js +0 -22
- package/src/table/readStream/mySql/query/newSubQueries/newQueryCore.js +0 -9
- package/src/table/readStream/mySql/query/newSubQueries/newSingleQueryCore.js +0 -18
- package/src/table/readStream/mySql/query/newSubQueries/oneLegToQuery.js +0 -22
- package/src/table/readStream/mySql/query/newSubQueries.js +0 -47
- package/src/table/readStream/mySql/query/singleQuery/newShallowColumnSql.js +0 -18
- package/src/table/readStream/newQuery.js +0 -32
- package/src/table/readStream/newQueryStream.js +0 -8
- package/src/table/readStream/pg/newQuery.js +0 -8
- package/src/table/readStream/pg/newQueryCore.js +0 -17
- package/src/table/readStream/pg/query/newSingleQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries/joinLegToQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries/manyLegToQuery.js +0 -22
- package/src/table/readStream/pg/query/newSubQueries/oneLegToQuery.js +0 -19
- package/src/table/readStream/pg/query/newSubQueries.js +0 -47
- package/src/table/readStream/pg/query/singleQuery/newShallowColumnSql.js +0 -20
- package/src/table/readStreamDefault/createBatchFilter.js +0 -39
- 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
|
|
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
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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) {
|
package/src/hostExpress.js
CHANGED
|
@@ -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
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;
|
package/src/mssql/newPool.js
CHANGED
|
@@ -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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
6
|
+
const name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias);
|
|
8
|
-
return
|
|
8
|
+
return formatString(format, alias, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
package/src/mySql/newPool.js
CHANGED
|
@@ -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
|
-
|
|
1
|
+
const { v4 : uuid} = require('uuid');
|
|
2
|
+
module.exports = uuid;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
6
|
+
const name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias);
|
|
8
|
-
return
|
|
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
|
-
|
|
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 =
|
|
23
|
+
var sql = formatString.apply(null, values);
|
|
24
24
|
return newParameterized(sql, parameters);
|
|
25
25
|
}
|
|
26
26
|
|
package/src/oracle/newPool.js
CHANGED
|
@@ -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) {
|
package/src/package.json
ADDED
package/src/pg/deleteFromSql.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
6
|
+
const name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias);
|
|
8
|
-
return
|
|
8
|
+
return formatString(format, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
package/src/pg/newPool.js
CHANGED
package/src/pg/pool/newPgPool.js
CHANGED
|
@@ -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
|
});
|
package/src/promisify.js
ADDED
|
@@ -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;
|
package/src/sap/deleteFromSql.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
var format = 'delete from %s from %s as %s %s';
|
|
2
|
-
|
|
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
|
|
8
|
+
return formatString(format, name, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
package/src/sap/newPool.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
-
|
|
6
|
+
const name = quote(table._dbName);
|
|
7
7
|
alias = quote(alias);
|
|
8
|
-
return
|
|
8
|
+
return formatString(format, name, name, alias, name, alias, whereSql);
|
|
9
9
|
}
|
|
10
10
|
module.exports = deleteFromSql;
|
package/src/sqlite/newPool.js
CHANGED
|
@@ -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
|
-
|
|
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;
|