orange-orm 4.3.0-beta.0 → 4.3.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orange-orm",
3
- "version": "4.3.0-beta.0",
3
+ "version": "4.3.0-beta.2",
4
4
  "main": "./src/index.js",
5
5
  "browser": "./src/client/index.mjs",
6
6
  "bin": {
@@ -47,7 +47,8 @@
47
47
  "build": "rollup -c ./src/client/rollup.config.js && npm run concat",
48
48
  "lint": "eslint ./",
49
49
  "fix": "eslint ./ --fix",
50
- "owasp": "owasp-dependency-check --project \"MY_PROJECT\" --scan \"package-lock.json\" --exclude \"dependency-check-bin\" --out \"owasp\" --format HTML"
50
+ "owasp": "owasp-dependency-check --project \"MY_PROJECT\" --scan \"package-lock.json\" --exclude \"dependency-check-bin\" --out \"owasp\" --format HTML",
51
+ "beta": "publish --tag beta"
51
52
  },
52
53
  "dependencies": {
53
54
  "@lroal/on-change": "^4.0.2",
@@ -63,7 +64,6 @@
63
64
  "glob": "^10.3.4",
64
65
  "module-definition": "^4.0.0",
65
66
  "node-cls": "^1.0.5",
66
- "postgres": "^3.4.4",
67
67
  "promise": "^8.0.3",
68
68
  "rfdc": "^1.2.0",
69
69
  "uuid": "^8.3.2"
@@ -72,7 +72,6 @@
72
72
  "msnodesqlv8": "^4.1.0",
73
73
  "mysql2": "^2.2.5 || ^3.9.4",
74
74
  "oracledb": "^6.3.0",
75
- "postgres": "^3.4.4",
76
75
  "pg": "^8.5.1",
77
76
  "pg-native": "^3.0.0",
78
77
  "pg-query-stream": "^3.3.2",
@@ -80,9 +79,6 @@
80
79
  "tedious": "^15.1.2 || ^16.0.0 || ^18.1.0"
81
80
  },
82
81
  "peerDependenciesMeta": {
83
- "postgres": {
84
- "optional": true
85
- },
86
82
  "pg": {
87
83
  "optional": true
88
84
  },
@@ -119,7 +115,6 @@
119
115
  "mysql2": "^3.9.4",
120
116
  "oracledb": "^6.3.0",
121
117
  "owasp-dependency-check": "^0.0.21",
122
- "postgres": "^3.4.4",
123
118
  "pg": "^8.5.1",
124
119
  "pg-query-stream": "^3.3.2",
125
120
  "rollup": "^2.52.7",
package/src/getManyDto.js CHANGED
@@ -128,7 +128,7 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
128
128
  for (let j = 0; j < aggregateKeys.length; j++) {
129
129
  const key = aggregateKeys[j];
130
130
  const parse = span.aggregates[key].column?.decode || Number.parseFloat;
131
- outRow[key] = parse(row[keys[j+columnsLength]]);
131
+ outRow[key] = parse(row[keys[j + columnsLength]]);
132
132
  }
133
133
 
134
134
  outRows[i] = outRow;
@@ -141,8 +141,18 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
141
141
  span._ids = fkIds;
142
142
 
143
143
  keys.splice(0, columnsLength + aggregateKeys.length);
144
+ if (span.legs.toArray().length === 0)
145
+ return outRows;
146
+
147
+ const all = [];
148
+
149
+ if (shouldCreateMap)
150
+ all.push(decodeManyRelations(strategy, span).then(() => decodeRelations2(strategy, span, rows, outRows, keys)));
151
+ else
152
+ all.push(decodeRelations2(strategy, span, rows, outRows, keys));
153
+
154
+ await Promise.all(all);
144
155
 
145
- await decodeRelations(strategy, span, rows, outRows, keys);
146
156
  return outRows;
147
157
 
148
158
 
@@ -165,19 +175,10 @@ async function decode(strategy, span, rows, keys = rows.length > 0 ? Object.keys
165
175
 
166
176
  }
167
177
 
168
- async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
178
+ async function decodeManyRelations(strategy, span) {
169
179
  const promises = [];
170
180
  const c = {};
171
- c.visitJoin = function(leg) {
172
- const name = leg.name;
173
- const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
174
- for (let i = 0; i < rows.length; i++) {
175
- resultRows[i][name] = rows[i];
176
- }
177
- });
178
- promises.push(p);
179
- };
180
-
181
+ c.visitJoin = () => { };
181
182
  c.visitOne = c.visitJoin;
182
183
 
183
184
  c.visitMany = function(leg) {
@@ -205,6 +206,74 @@ async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
205
206
  await Promise.all(promises);
206
207
  }
207
208
 
209
+ async function decodeRelations2(strategy, span, rawRows, resultRows, keys) {
210
+ const promises = [];
211
+ const c = {};
212
+ c.visitJoin = function (leg) {
213
+ const name = leg.name;
214
+ const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
215
+ for (let i = 0; i < rows.length; i++) {
216
+ resultRows[i][name] = rows[i];
217
+ }
218
+ });
219
+ promises.push(p);
220
+ };
221
+
222
+ c.visitOne = c.visitJoin;
223
+
224
+ c.visitMany = () => { };
225
+
226
+
227
+ span.legs.forEach(onEachLeg);
228
+
229
+ function onEachLeg(leg) {
230
+ leg.accept(c);
231
+ }
232
+
233
+ await Promise.all(promises);
234
+ }
235
+
236
+
237
+ // async function decodeRelations(strategy, span, rawRows, resultRows, keys) {
238
+ // const promises = [];
239
+ // const c = {};
240
+ // c.visitJoin = function (leg) {
241
+ // const name = leg.name;
242
+ // const p = decode(strategy[name], leg.span, rawRows, keys).then((rows) => {
243
+ // for (let i = 0; i < rows.length; i++) {
244
+ // resultRows[i][name] = rows[i];
245
+ // }
246
+ // });
247
+ // promises.push(p);
248
+ // };
249
+
250
+ // c.visitOne = c.visitJoin;
251
+
252
+ // c.visitMany = function (leg) {
253
+ // const name = leg.name;
254
+ // const table = span.table;
255
+ // const relation = table._relations[name];
256
+ // const filter = createOneFilter(relation, span._ids);
257
+ // const rowsMap = span._rowsMap;
258
+ // const p = getManyDto(relation.childTable, filter, strategy[name], leg.span).then(subRows => {
259
+ // for (let i = 0; i < subRows.length; i++) {
260
+ // const key = leg.columns.map(column => subRows[i][column.alias]);
261
+ // const parentRow = getFromMap(rowsMap, table._primaryColumns, key);
262
+ // parentRow[name].push(subRows[i]);
263
+ // }
264
+ // });
265
+ // promises.push(p);
266
+ // };
267
+
268
+ // span.legs.forEach(onEachLeg);
269
+
270
+ // function onEachLeg(leg) {
271
+ // leg.accept(c);
272
+ // }
273
+
274
+ // await Promise.all(promises);
275
+ // }
276
+
208
277
  function createOneFilter(relation, ids) {
209
278
  const columns = relation.joinRelation.columns;
210
279
 
@@ -216,7 +285,7 @@ function createOneFilter(relation, ids) {
216
285
 
217
286
  function createCompositeFilter() {
218
287
  let filter = emptyFilter;
219
- for(let id of ids) {
288
+ for (let id of ids) {
220
289
  let nextFilter;
221
290
  for (let i = 0; i < columns.length; i++) {
222
291
  if (nextFilter)
@@ -43,7 +43,7 @@ function newDatabase(connectionString, poolOptions) {
43
43
 
44
44
  async function runInTransaction() {
45
45
  let result;
46
- let transaction = newTransaction(domain, pool);
46
+ let transaction = newTransaction(domain, pool, options);
47
47
  await new Promise(transaction)
48
48
  .then(begin)
49
49
  .then(fn)
@@ -59,7 +59,7 @@ function newDatabase(connectionString, poolOptions) {
59
59
 
60
60
  function run() {
61
61
  let p;
62
- let transaction = newTransaction(domain, pool);
62
+ let transaction = newTransaction(domain, pool, options);
63
63
  if (useHook())
64
64
  p = new Promise(transaction);
65
65
  else
@@ -8,12 +8,63 @@ const formatDateOut = require('../tedious/formatDateOut');
8
8
  const insertSql = require('../tedious/insertSql');
9
9
  const insert = require('../tedious/insert');
10
10
 
11
- function newResolveTransaction(domain, pool) {
11
+ function newResolveTransaction(domain, pool, { readonly } = {}) {
12
12
  var rdb = {poolFactory: pool};
13
13
  if (!pool.connect) {
14
14
  pool = pool();
15
15
  rdb.pool = pool;
16
16
  }
17
+ rdb.engine = 'mssqlNative';
18
+ rdb.encodeBoolean = encodeBoolean;
19
+ rdb.decodeJSON = decodeJSON;
20
+ rdb.encodeJSON = JSON.stringify;
21
+ rdb.formatDateOut = formatDateOut;
22
+ rdb.deleteFromSql = deleteFromSql;
23
+ rdb.selectForUpdateSql = selectForUpdateSql;
24
+ rdb.outputInsertedSql = outputInsertedSql;
25
+ rdb.insertSql = insertSql;
26
+ rdb.insert = insert;
27
+ rdb.lastInsertedIsSeparate = false;
28
+ rdb.multipleStatements = true;
29
+ rdb.begin = 'BEGIN TRANSACTION';
30
+ rdb.limit = (span) => {
31
+ if (span.offset)
32
+ return '';
33
+ else if (span.limit || span.limit === 0)
34
+ return 'TOP ' + span.limit;
35
+ else
36
+ return '';
37
+ };
38
+ rdb.limitAndOffset = limitAndOffset;
39
+ rdb.accept = function(caller) {
40
+ caller.visitSqlite();
41
+ };
42
+ rdb.aggregateCount = 0;
43
+ rdb.quote = (name) => `[${name}]`;
44
+
45
+ if (readonly) {
46
+ rdb.dbClient = {
47
+ executeQuery: function(query, callback) {
48
+ pool.connect((err, client, done) => {
49
+ if (err) {
50
+ return callback(err);
51
+ }
52
+ try {
53
+ client.setUseUTC(false);
54
+ wrapQuery(client)(query, (err, res) => {
55
+ done();
56
+ callback(err, res);
57
+ });
58
+ } catch (e) {
59
+ done();
60
+ callback(e);
61
+ }
62
+ });
63
+ }
64
+ };
65
+ domain.rdb = rdb;
66
+ return (onSuccess) => onSuccess();
67
+ }
17
68
 
18
69
  return function(onSuccess, onError) {
19
70
  pool.connect(onConnected);
@@ -26,35 +77,8 @@ function newResolveTransaction(domain, pool) {
26
77
  }
27
78
  client.setUseUTC(false);
28
79
  client.executeQuery = wrapQuery(client);
29
- rdb.engine = 'mssqlNative';
30
80
  rdb.dbClient = client;
31
81
  rdb.dbClientDone = done;
32
- rdb.encodeBoolean = encodeBoolean;
33
- rdb.decodeJSON = decodeJSON;
34
- rdb.encodeJSON = JSON.stringify;
35
- rdb.formatDateOut = formatDateOut;
36
- rdb.deleteFromSql = deleteFromSql;
37
- rdb.selectForUpdateSql = selectForUpdateSql;
38
- rdb.outputInsertedSql = outputInsertedSql;
39
- rdb.insertSql = insertSql;
40
- rdb.insert = insert;
41
- rdb.lastInsertedIsSeparate = false;
42
- rdb.multipleStatements = true;
43
- rdb.begin = 'BEGIN TRANSACTION';
44
- rdb.limit = (span) => {
45
- if (span.offset)
46
- return '';
47
- else if (span.limit || span.limit === 0)
48
- return 'TOP ' + span.limit;
49
- else
50
- return '';
51
- };
52
- rdb.limitAndOffset = limitAndOffset;
53
- rdb.accept = function(caller) {
54
- caller.visitSqlite();
55
- };
56
- rdb.aggregateCount = 0;
57
- rdb.quote = (name) => `[${name}]`;
58
82
  domain.rdb = rdb;
59
83
  onSuccess();
60
84
  } catch (e) {
@@ -42,7 +42,7 @@ function newDatabase(connectionString, poolOptions) {
42
42
 
43
43
  async function runInTransaction() {
44
44
  let result;
45
- let transaction = newTransaction(domain, pool);
45
+ let transaction = newTransaction(domain, pool, options);
46
46
  await new Promise(transaction)
47
47
  .then(begin)
48
48
  .then(fn)
@@ -58,7 +58,7 @@ function newDatabase(connectionString, poolOptions) {
58
58
 
59
59
  function run() {
60
60
  let p;
61
- let transaction = newTransaction(domain, pool);
61
+ let transaction = newTransaction(domain, pool, options);
62
62
  if (useHook())
63
63
  p = new Promise(transaction);
64
64
  else
@@ -7,42 +7,65 @@ const limitAndOffset = require('./limitAndOffset');
7
7
  const insertSql = require('./insertSql');
8
8
  const insert = require('./insert');
9
9
 
10
- function newResolveTransaction(domain, pool) {
10
+ function newResolveTransaction(domain, pool, { readonly } = {}) {
11
11
  var rdb = {poolFactory: pool};
12
12
  if (!pool.connect) {
13
13
  pool = pool();
14
14
  rdb.pool = pool;
15
15
  }
16
+ rdb.engine = 'mysql';
17
+ rdb.encodeBoolean = encodeBoolean;
18
+ rdb.encodeJSON = JSON.stringify;
19
+ rdb.deleteFromSql = deleteFromSql;
20
+ rdb.selectForUpdateSql = selectForUpdateSql;
21
+ rdb.lastInsertedIsSeparate = true;
22
+ rdb.lastInsertedSql = lastInsertedSql;
23
+ rdb.insertSql = insertSql;
24
+ rdb.insert = insert;
25
+ rdb.multipleStatements = false;
26
+ rdb.limitAndOffset = limitAndOffset;
27
+ rdb.accept = function(caller) {
28
+ caller.visitMySql();
29
+ };
30
+ rdb.aggregateCount = 0;
31
+ rdb.quote = (name) => `\`${name}\``;
32
+
33
+
34
+ if (readonly) {
35
+ rdb.dbClient = {
36
+ executeQuery: function(query, callback) {
37
+ pool.connect((err, client, done) => {
38
+ if (err) {
39
+ return callback(err);
40
+ }
41
+ try {
42
+ wrapQuery(client)(query, (err, res) => {
43
+ done();
44
+ callback(err, res);
45
+ });
46
+ } catch (e) {
47
+ done();
48
+ callback(e);
49
+ }
50
+ });
51
+ }
52
+ };
53
+ domain.rdb = rdb;
54
+ return (onSuccess) => onSuccess();
55
+ }
16
56
 
17
57
  return function(onSuccess, onError) {
18
58
  pool.connect(onConnected);
19
59
 
20
- function onConnected(err, connection, done) {
60
+ function onConnected(err, client, done) {
21
61
  try {
22
62
  if (err) {
23
63
  onError(err);
24
64
  return;
25
65
  }
26
- connection.executeQuery = wrapQuery(connection);
27
- // connection.streamQuery = wrapQueryStream(connection);
28
- rdb.engine = 'mysql';
29
- rdb.dbClient = connection;
66
+ client.executeQuery = wrapQuery(client);
67
+ rdb.dbClient = client;
30
68
  rdb.dbClientDone = done;
31
- rdb.encodeBoolean = encodeBoolean;
32
- rdb.encodeJSON = JSON.stringify;
33
- rdb.deleteFromSql = deleteFromSql;
34
- rdb.selectForUpdateSql = selectForUpdateSql;
35
- rdb.lastInsertedIsSeparate = true;
36
- rdb.lastInsertedSql = lastInsertedSql;
37
- rdb.insertSql = insertSql;
38
- rdb.insert = insert;
39
- rdb.multipleStatements = false;
40
- rdb.limitAndOffset = limitAndOffset;
41
- rdb.accept = function(caller) {
42
- caller.visitMySql();
43
- };
44
- rdb.aggregateCount = 0;
45
- rdb.quote = (name) => `\`${name}\``;
46
69
  domain.rdb = rdb;
47
70
  onSuccess();
48
71
  } catch (e) {
@@ -47,7 +47,7 @@ function newDatabase(connectionString, poolOptions) {
47
47
 
48
48
  async function runInTransaction() {
49
49
  let result;
50
- let transaction = newTransaction(domain, pool);
50
+ let transaction = newTransaction(domain, pool, options);
51
51
  await new Promise(transaction)
52
52
  .then(begin)
53
53
  .then(fn)
@@ -59,7 +59,7 @@ function newDatabase(connectionString, poolOptions) {
59
59
 
60
60
  function run() {
61
61
  let p;
62
- let transaction = newTransaction(domain, pool);
62
+ let transaction = newTransaction(domain, pool, options);
63
63
  if (useHook())
64
64
  p = new Promise(transaction);
65
65
  else
@@ -9,13 +9,58 @@ const insert = require('./insert');
9
9
  const formatDateOut = require('./formatDateOut');
10
10
  const formatDateIn = require('./formatDateIn');
11
11
 
12
- function newResolveTransaction(domain, pool) {
12
+ function newResolveTransaction(domain, pool, { readonly } = {}) {
13
13
  var rdb = {poolFactory: pool};
14
14
  if (!pool.connect) {
15
15
  pool = pool();
16
16
  rdb.pool = pool;
17
17
  }
18
18
 
19
+ rdb.begin = 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED';
20
+ rdb.engine = 'oracle';
21
+ rdb.encodeBoolean = encodeBoolean;
22
+ rdb.decodeJSON = decodeJSON;
23
+ rdb.encodeJSON = JSON.stringify;
24
+ rdb.formatDateOut = formatDateOut;
25
+ rdb.formatDateIn = formatDateIn;
26
+ rdb.deleteFromSql = deleteFromSql;
27
+ rdb.selectForUpdateSql = selectForUpdateSql;
28
+ rdb.lastInsertedSql = lastInsertedSql;
29
+ rdb.insertSql = insertSql;
30
+ rdb.insert = insert;
31
+ rdb.lastInsertedIsSeparate = true;
32
+ rdb.multipleStatements = false;
33
+ rdb.limitAndOffset = limitAndOffset;
34
+ rdb.accept = function(caller) {
35
+ caller.visitSqlite();
36
+ };
37
+ rdb.aggregateCount = 0;
38
+ rdb.quote = (name) => `"${name}"`;
39
+
40
+ if (readonly) {
41
+ rdb.dbClient = {
42
+ executeQuery: function(query, callback) {
43
+ pool.connect((err, client, done) => {
44
+ if (err) {
45
+ return callback(err);
46
+ }
47
+ try {
48
+ wrapQuery(client)(query, (err, res) => {
49
+ done();
50
+ callback(err, res);
51
+ });
52
+ } catch (e) {
53
+ done();
54
+ callback(e);
55
+ }
56
+ });
57
+ }
58
+ };
59
+ domain.rdb = rdb;
60
+ return (onSuccess) => onSuccess();
61
+ }
62
+
63
+
19
64
  return function(onSuccess, onError) {
20
65
  pool.connect(onConnected);
21
66
 
@@ -26,29 +71,10 @@ function newResolveTransaction(domain, pool) {
26
71
  return;
27
72
  }
28
73
  client.executeQuery = wrapQuery(client);
29
- rdb.begin = 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED';
30
- rdb.engine = 'oracle';
31
74
  rdb.dbClient = client;
32
75
  rdb.dbClientDone = done;
33
- rdb.encodeBoolean = encodeBoolean;
34
- rdb.decodeJSON = decodeJSON;
35
- rdb.encodeJSON = JSON.stringify;
36
- rdb.formatDateOut = formatDateOut;
37
- rdb.formatDateIn = formatDateIn;
38
- rdb.deleteFromSql = deleteFromSql;
39
- rdb.selectForUpdateSql = selectForUpdateSql;
40
- rdb.lastInsertedSql = lastInsertedSql;
41
- rdb.insertSql = insertSql;
42
- rdb.insert = insert;
43
- rdb.lastInsertedIsSeparate = true;
44
- rdb.multipleStatements = false;
45
- rdb.limitAndOffset = limitAndOffset;
46
- rdb.accept = function(caller) {
47
- caller.visitSqlite();
48
- };
49
- rdb.aggregateCount = 0;
50
- rdb.quote = (name) => `"${name}"`;
51
76
  domain.rdb = rdb;
77
+
52
78
  onSuccess();
53
79
  } catch (e) {
54
80
  onError(e);
@@ -1,5 +1,5 @@
1
1
  function encodeBoolean(bool) {
2
- return bool;
2
+ return bool.toString();
3
3
  }
4
4
 
5
5
  module.exports = encodeBoolean;
@@ -1,7 +1,7 @@
1
1
  function encodeDate(date) {
2
2
  if (date.toISOString)
3
- return '' + date.toISOString() + '';
4
- return '' + date + '';
3
+ return '\'' + date.toISOString() + '\'';
4
+ return '\'' + date + '\'';
5
5
  }
6
6
 
7
7
  module.exports = encodeDate;
@@ -1,16 +1,15 @@
1
1
  function encode(arg) {
2
- // if (Array.isArray(arg))
3
- // return new JsonBArrayParam(arg);
4
- // else
5
- return arg;
2
+ if (Array.isArray(arg))
3
+ return new JsonBArrayParam(arg);
4
+ else
5
+ return arg;
6
6
  }
7
7
 
8
- //todo
9
- // class JsonBArrayParam {
10
- // constructor(actualArray) { this.actualArray = actualArray; }
11
- // toPostgres() {
12
- // return JSON.stringify(this.actualArray);
13
- // }
14
- // }
8
+ class JsonBArrayParam {
9
+ constructor(actualArray) { this.actualArray = actualArray; }
10
+ toPostgres() {
11
+ return JSON.stringify(this.actualArray);
12
+ }
13
+ }
15
14
 
16
15
  module.exports = encode;
@@ -52,7 +52,7 @@ function newDatabase(connectionString, poolOptions) {
52
52
 
53
53
  async function runInTransaction() {
54
54
  let result;
55
- let transaction = newTransaction(domain, pool);
55
+ let transaction = newTransaction(domain, pool, options);
56
56
  await new Promise(transaction)
57
57
  .then(begin)
58
58
  .then(negotiateSchema)
@@ -69,7 +69,7 @@ function newDatabase(connectionString, poolOptions) {
69
69
 
70
70
  function run() {
71
71
  let p;
72
- let transaction = newTransaction(domain, pool);
72
+ let transaction = newTransaction(domain, pool, options);
73
73
  if (useHook())
74
74
  p = new Promise(transaction);
75
75
  else
@@ -1,5 +1,4 @@
1
1
  var wrapQuery = require('./wrapQuery');
2
- var wrapQueryStream = require('./wrapQueryStream');
3
2
  var encodeDate = require('./encodeDate');
4
3
  var encodeBoolean = require('./encodeBoolean');
5
4
  var deleteFromSql = require('./deleteFromSql');
@@ -10,13 +9,54 @@ var encodeJSON = require('./encodeJSON');
10
9
  var insertSql = require('./insertSql');
11
10
  var insert = require('./insert');
12
11
 
13
- function newResolveTransaction(domain, pool) {
14
- var rdb = {poolFactory: pool};
12
+ function newResolveTransaction(domain, pool, { readonly } = {}) {
13
+ var rdb = { poolFactory: pool };
15
14
  if (!pool.connect) {
16
15
  pool = pool();
17
16
  rdb.pool = pool;
18
17
  }
19
18
 
19
+ rdb.engine = 'pg';
20
+ rdb.encodeBoolean = encodeBoolean;
21
+ rdb.encodeDate = encodeDate;
22
+ rdb.encodeJSON = encodeJSON;
23
+ rdb.formatDateOut = formatDateOut;
24
+ rdb.deleteFromSql = deleteFromSql;
25
+ rdb.selectForUpdateSql = selectForUpdateSql;
26
+ rdb.lastInsertedIsSeparate = false;
27
+ rdb.insertSql = insertSql;
28
+ rdb.insert = insert;
29
+ rdb.multipleStatements = true;
30
+ rdb.limitAndOffset = limitAndOffset;
31
+ rdb.accept = function(caller) {
32
+ caller.visitPg();
33
+ };
34
+ rdb.aggregateCount = 0;
35
+ rdb.quote = (name) => `"${name}"`;
36
+
37
+ if (readonly) {
38
+ rdb.dbClient = {
39
+ executeQuery: function(query, callback) {
40
+ pool.connect((err, client, done) => {
41
+ if (err) {
42
+ return callback(err);
43
+ }
44
+ try {
45
+ wrapQuery(client)(query, (err, res) => {
46
+ done();
47
+ callback(err, res);
48
+ });
49
+ } catch (e) {
50
+ done();
51
+ callback(e);
52
+ }
53
+ });
54
+ }
55
+ };
56
+ domain.rdb = rdb;
57
+ return (onSuccess) => onSuccess();
58
+ }
59
+
20
60
  return function(onSuccess, onError) {
21
61
  pool.connect(onConnected);
22
62
 
@@ -27,26 +67,8 @@ function newResolveTransaction(domain, pool) {
27
67
  return;
28
68
  }
29
69
  client.executeQuery = wrapQuery(client);
30
- client.streamQuery = wrapQueryStream(client);
31
- rdb.engine = 'pg';
32
70
  rdb.dbClient = client;
33
71
  rdb.dbClientDone = done;
34
- rdb.encodeBoolean = encodeBoolean;
35
- rdb.encodeDate = encodeDate;
36
- rdb.encodeJSON = encodeJSON;
37
- rdb.formatDateOut = formatDateOut;
38
- rdb.deleteFromSql = deleteFromSql;
39
- rdb.selectForUpdateSql = selectForUpdateSql;
40
- rdb.lastInsertedIsSeparate = false;
41
- rdb.insertSql = insertSql;
42
- rdb.insert = insert;
43
- rdb.multipleStatements = true;
44
- rdb.limitAndOffset = limitAndOffset;
45
- rdb.accept = function(caller) {
46
- caller.visitPg();
47
- };
48
- rdb.aggregateCount = 0;
49
- rdb.quote = (name) => `"${name}"`;
50
72
  domain.rdb = rdb;
51
73
  onSuccess();
52
74
  } catch (e) {
@@ -56,4 +78,4 @@ function newResolveTransaction(domain, pool) {
56
78
  };
57
79
  }
58
80
 
59
- module.exports = newResolveTransaction;
81
+ module.exports = newResolveTransaction;