@graffy/pg 0.15.7 → 0.15.8-alpha.1
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/cjs/Db.js +93 -74
- package/cjs/filter/getSql.js +30 -19
- package/cjs/index.js +5 -0
- package/cjs/sql/getArgSql.js +11 -5
- package/cjs/sql/getMeta.js +6 -2
- package/cjs/sql/upsert.js +1 -1
- package/cjs/test/setup.js +192 -68
- package/package.json +3 -3
- package/types/Db.d.ts +2 -2
- package/types/index.d.ts +5 -5
- package/types/sql/getArgSql.d.ts +1 -1
package/cjs/Db.js
CHANGED
|
@@ -19,12 +19,10 @@ exports.default = void 0;
|
|
|
19
19
|
|
|
20
20
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
|
|
23
23
|
|
|
24
24
|
var _flat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/flat"));
|
|
25
25
|
|
|
26
|
-
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
27
|
-
|
|
28
26
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
29
27
|
|
|
30
28
|
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
@@ -33,6 +31,8 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
|
|
|
33
31
|
|
|
34
32
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
35
33
|
|
|
34
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
35
|
+
|
|
36
36
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
37
37
|
|
|
38
38
|
var _pg = require("pg");
|
|
@@ -47,13 +47,13 @@ var _index2 = require("./sql/index.js");
|
|
|
47
47
|
|
|
48
48
|
var _debug = _interopRequireDefault(require("debug"));
|
|
49
49
|
|
|
50
|
-
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var
|
|
50
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var _context10; var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (it) return _bindInstanceProperty(_context10 = (it = it.call(o)).next).call(_context10, it); if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
51
51
|
|
|
52
|
-
function _unsupportedIterableToArray(o, minLen) { var
|
|
52
|
+
function _unsupportedIterableToArray(o, minLen) { var _context9; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context9 = Object.prototype.toString.call(o)).call(_context9, 8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
53
53
|
|
|
54
54
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
55
55
|
|
|
56
|
-
var log = (0, _debug.default)('graffy:pg:
|
|
56
|
+
var log = (0, _debug.default)('graffy:pg:db');
|
|
57
57
|
|
|
58
58
|
var Db = /*#__PURE__*/function () {
|
|
59
59
|
function Db(connection) {
|
|
@@ -67,33 +67,31 @@ var Db = /*#__PURE__*/function () {
|
|
|
67
67
|
var _proto = Db.prototype;
|
|
68
68
|
|
|
69
69
|
_proto.query = /*#__PURE__*/function () {
|
|
70
|
-
var _query = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(
|
|
71
|
-
var start, res, duration;
|
|
70
|
+
var _query = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(sql) {
|
|
72
71
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
73
72
|
while (1) {
|
|
74
73
|
switch (_context.prev = _context.next) {
|
|
75
74
|
case 0:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
_context.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
log('query', {
|
|
85
|
-
query: sqlQuery.text,
|
|
86
|
-
duration: duration,
|
|
87
|
-
res: res
|
|
88
|
-
});
|
|
89
|
-
return _context.abrupt("return", res);
|
|
75
|
+
sql.rowMode = 'array';
|
|
76
|
+
log('Making SQL query: ' + sql.text, (0, _values.default)(sql));
|
|
77
|
+
_context.prev = 2;
|
|
78
|
+
_context.next = 5;
|
|
79
|
+
return this.client.query(sql);
|
|
80
|
+
|
|
81
|
+
case 5:
|
|
82
|
+
return _context.abrupt("return", _context.sent);
|
|
90
83
|
|
|
91
84
|
case 8:
|
|
85
|
+
_context.prev = 8;
|
|
86
|
+
_context.t0 = _context["catch"](2);
|
|
87
|
+
throw Error('pg.sql_error ' + _context.t0.message + ' in ' + sql.text + ' with ' + (0, _values.default)(sql));
|
|
88
|
+
|
|
89
|
+
case 11:
|
|
92
90
|
case "end":
|
|
93
91
|
return _context.stop();
|
|
94
92
|
}
|
|
95
93
|
}
|
|
96
|
-
}, _callee, this);
|
|
94
|
+
}, _callee, this, [[2, 8]]);
|
|
97
95
|
}));
|
|
98
96
|
|
|
99
97
|
function query(_x) {
|
|
@@ -150,9 +148,18 @@ var Db = /*#__PURE__*/function () {
|
|
|
150
148
|
case 2:
|
|
151
149
|
res = _context4.sent;
|
|
152
150
|
log('Rows written', res.rowCount);
|
|
153
|
-
return _context4.abrupt("return", res.rowCount);
|
|
154
151
|
|
|
155
|
-
|
|
152
|
+
if (res.rowCount) {
|
|
153
|
+
_context4.next = 6;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
throw Error('pg.nothing_written ' + sql.text + ' with ' + (0, _values.default)(sql));
|
|
158
|
+
|
|
159
|
+
case 6:
|
|
160
|
+
return _context4.abrupt("return", res.rows[0][0]);
|
|
161
|
+
|
|
162
|
+
case 7:
|
|
156
163
|
case "end":
|
|
157
164
|
return _context4.stop();
|
|
158
165
|
}
|
|
@@ -171,11 +178,11 @@ var Db = /*#__PURE__*/function () {
|
|
|
171
178
|
var _read = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(rootQuery, tableOptions) {
|
|
172
179
|
var _this = this;
|
|
173
180
|
|
|
174
|
-
var idQueries, promises, results, refQuery, idCol, prefix, getByArgs, getByIds, query, _iterator, _step, node, args;
|
|
181
|
+
var idQueries, promises, results, refQuery, idCol, prefix, getByArgs, getByIds, query, _iterator, _step, node, args, _iterator2, _step2, childNode, childArgs;
|
|
175
182
|
|
|
176
|
-
return _regenerator.default.wrap(function _callee6$(
|
|
183
|
+
return _regenerator.default.wrap(function _callee6$(_context7) {
|
|
177
184
|
while (1) {
|
|
178
|
-
switch (
|
|
185
|
+
switch (_context7.prev = _context7.next) {
|
|
179
186
|
case 0:
|
|
180
187
|
idQueries = {};
|
|
181
188
|
promises = [];
|
|
@@ -185,27 +192,24 @@ var Db = /*#__PURE__*/function () {
|
|
|
185
192
|
|
|
186
193
|
getByArgs = /*#__PURE__*/function () {
|
|
187
194
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(args, subQuery) {
|
|
188
|
-
var
|
|
189
|
-
|
|
190
|
-
var result, wrappedQuery, wrappedGraph;
|
|
191
|
-
return _regenerator.default.wrap(function _callee4$(_context6) {
|
|
195
|
+
var result, wrappedGraph;
|
|
196
|
+
return _regenerator.default.wrap(function _callee4$(_context5) {
|
|
192
197
|
while (1) {
|
|
193
|
-
switch (
|
|
198
|
+
switch (_context5.prev = _context5.next) {
|
|
194
199
|
case 0:
|
|
195
|
-
|
|
200
|
+
_context5.next = 2;
|
|
196
201
|
return _this.readSql((0, _select.selectByArgs)(args, tableOptions));
|
|
197
202
|
|
|
198
203
|
case 2:
|
|
199
|
-
result =
|
|
204
|
+
result = _context5.sent;
|
|
200
205
|
(0, _common.add)(refQuery, (0, _index.linkResult)(result, subQuery, tableOptions));
|
|
201
|
-
wrappedQuery = (0, _common.wrap)(subQuery, (0, _concat.default)(_context5 = []).call(_context5, prefix, [args]));
|
|
202
206
|
wrappedGraph = (0, _common.encodeGraph)((0, _common.wrapObject)(result, prefix));
|
|
203
|
-
log('getByArgs', wrappedGraph
|
|
204
|
-
(0, _common.merge)(results,
|
|
207
|
+
log('getByArgs', wrappedGraph);
|
|
208
|
+
(0, _common.merge)(results, wrappedGraph);
|
|
205
209
|
|
|
206
|
-
case
|
|
210
|
+
case 7:
|
|
207
211
|
case "end":
|
|
208
|
-
return
|
|
212
|
+
return _context5.stop();
|
|
209
213
|
}
|
|
210
214
|
}
|
|
211
215
|
}, _callee4);
|
|
@@ -219,30 +223,27 @@ var Db = /*#__PURE__*/function () {
|
|
|
219
223
|
getByIds = /*#__PURE__*/function () {
|
|
220
224
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
221
225
|
var result;
|
|
222
|
-
return _regenerator.default.wrap(function _callee5$(
|
|
226
|
+
return _regenerator.default.wrap(function _callee5$(_context6) {
|
|
223
227
|
while (1) {
|
|
224
|
-
switch (
|
|
228
|
+
switch (_context6.prev = _context6.next) {
|
|
225
229
|
case 0:
|
|
226
|
-
|
|
230
|
+
_context6.next = 2;
|
|
227
231
|
return _this.readSql((0, _select.selectByIds)((0, _keys.default)(idQueries), tableOptions));
|
|
228
232
|
|
|
229
233
|
case 2:
|
|
230
|
-
result =
|
|
234
|
+
result = _context6.sent;
|
|
231
235
|
(0, _forEach.default)(result).call(result, function (object) {
|
|
232
|
-
var _context7;
|
|
233
|
-
|
|
234
236
|
var id = object[idCol];
|
|
235
237
|
var subQuery = idQueries[id];
|
|
236
238
|
(0, _common.add)(refQuery, (0, _index.linkResult)([object], subQuery, tableOptions));
|
|
237
|
-
var wrappedQuery = (0, _common.wrap)(subQuery, (0, _concat.default)(_context7 = []).call(_context7, prefix, [id]));
|
|
238
239
|
var wrappedGraph = (0, _common.encodeGraph)((0, _common.wrapObject)(object, prefix));
|
|
239
|
-
log('getByIds', wrappedGraph
|
|
240
|
-
(0, _common.merge)(results,
|
|
240
|
+
log('getByIds', wrappedGraph);
|
|
241
|
+
(0, _common.merge)(results, wrappedGraph);
|
|
241
242
|
});
|
|
242
243
|
|
|
243
244
|
case 4:
|
|
244
245
|
case "end":
|
|
245
|
-
return
|
|
246
|
+
return _context6.stop();
|
|
246
247
|
}
|
|
247
248
|
}
|
|
248
249
|
}, _callee5);
|
|
@@ -260,23 +261,31 @@ var Db = /*#__PURE__*/function () {
|
|
|
260
261
|
args = (0, _common.decodeArgs)(node);
|
|
261
262
|
|
|
262
263
|
if ((0, _common.isPlainObject)(args)) {
|
|
263
|
-
|
|
264
|
+
if (node.prefix) {
|
|
265
|
+
for (_iterator2 = _createForOfIteratorHelperLoose(node.children); !(_step2 = _iterator2()).done;) {
|
|
266
|
+
childNode = _step2.value;
|
|
267
|
+
childArgs = (0, _common.decodeArgs)(childNode);
|
|
268
|
+
promises.push(getByArgs((0, _extends2.default)({}, args, childArgs), childNode.children));
|
|
269
|
+
}
|
|
270
|
+
} else {
|
|
271
|
+
promises.push(getByArgs(args, node.children));
|
|
272
|
+
}
|
|
264
273
|
} else {
|
|
265
274
|
idQueries[node.key] = node.children;
|
|
266
275
|
}
|
|
267
276
|
}
|
|
268
277
|
|
|
269
278
|
if (!(0, _common.isEmpty)(idQueries)) promises.push(getByIds());
|
|
270
|
-
|
|
279
|
+
_context7.next = 12;
|
|
271
280
|
return _promise.default.all(promises);
|
|
272
281
|
|
|
273
282
|
case 12:
|
|
274
283
|
log('dbRead', rootQuery, results);
|
|
275
|
-
return
|
|
284
|
+
return _context7.abrupt("return", (0, _sliceInstanceProperty(_common))((0, _common.finalize)(results, rootQuery), rootQuery).known || []);
|
|
276
285
|
|
|
277
286
|
case 14:
|
|
278
287
|
case "end":
|
|
279
|
-
return
|
|
288
|
+
return _context7.stop();
|
|
280
289
|
}
|
|
281
290
|
}
|
|
282
291
|
}, _callee6);
|
|
@@ -293,11 +302,11 @@ var Db = /*#__PURE__*/function () {
|
|
|
293
302
|
var _write = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(rootChange, tableOptions) {
|
|
294
303
|
var _this2 = this;
|
|
295
304
|
|
|
296
|
-
var sqls, addToQuery, prefix, change,
|
|
305
|
+
var sqls, addToQuery, prefix, change, _iterator3, _step3, node, arg, object, result;
|
|
297
306
|
|
|
298
|
-
return _regenerator.default.wrap(function _callee7$(
|
|
307
|
+
return _regenerator.default.wrap(function _callee7$(_context8) {
|
|
299
308
|
while (1) {
|
|
300
|
-
switch (
|
|
309
|
+
switch (_context8.prev = _context8.next) {
|
|
301
310
|
case 0:
|
|
302
311
|
sqls = [];
|
|
303
312
|
|
|
@@ -307,53 +316,63 @@ var Db = /*#__PURE__*/function () {
|
|
|
307
316
|
|
|
308
317
|
prefix = tableOptions.prefix;
|
|
309
318
|
change = (0, _common.unwrap)(rootChange, prefix);
|
|
310
|
-
|
|
319
|
+
_iterator3 = _createForOfIteratorHelperLoose(change);
|
|
311
320
|
|
|
312
321
|
case 5:
|
|
313
|
-
if ((
|
|
314
|
-
|
|
322
|
+
if ((_step3 = _iterator3()).done) {
|
|
323
|
+
_context8.next = 17;
|
|
315
324
|
break;
|
|
316
325
|
}
|
|
317
326
|
|
|
318
|
-
node =
|
|
327
|
+
node = _step3.value;
|
|
319
328
|
|
|
320
329
|
if (!(0, _common.isRange)(node)) {
|
|
321
|
-
|
|
330
|
+
_context8.next = 9;
|
|
322
331
|
break;
|
|
323
332
|
}
|
|
324
333
|
|
|
325
334
|
throw Error(node.key === node.end ? 'pg_write.delete_unsupported' : 'pg_write.write_range_unsupported');
|
|
326
335
|
|
|
327
336
|
case 9:
|
|
328
|
-
object = (0, _common.decodeGraph)(node.children);
|
|
329
337
|
arg = (0, _common.decodeArgs)(node);
|
|
338
|
+
object = (0, _common.decodeGraph)(node.children);
|
|
339
|
+
|
|
340
|
+
if ((0, _common.isPlainObject)(arg)) {
|
|
341
|
+
(0, _common.mergeObject)(object, arg);
|
|
342
|
+
} else {
|
|
343
|
+
object.id = arg;
|
|
344
|
+
}
|
|
330
345
|
|
|
331
346
|
if (!(object.$put && object.$put !== true)) {
|
|
332
|
-
|
|
347
|
+
_context8.next = 14;
|
|
333
348
|
break;
|
|
334
349
|
}
|
|
335
350
|
|
|
336
351
|
throw Error('pg_write.partial_put_unsupported');
|
|
337
352
|
|
|
338
|
-
case
|
|
353
|
+
case 14:
|
|
339
354
|
object.$put ? addToQuery((0, _index2.put)(object, arg, tableOptions)) : addToQuery((0, _index2.patch)(object, arg, tableOptions));
|
|
340
355
|
|
|
341
|
-
case
|
|
342
|
-
|
|
356
|
+
case 15:
|
|
357
|
+
_context8.next = 5;
|
|
343
358
|
break;
|
|
344
359
|
|
|
345
|
-
case
|
|
346
|
-
|
|
360
|
+
case 17:
|
|
361
|
+
result = [];
|
|
362
|
+
_context8.next = 20;
|
|
347
363
|
return _promise.default.all((0, _map.default)(sqls).call(sqls, function (sql) {
|
|
348
|
-
return _this2.writeSql(sql)
|
|
364
|
+
return _this2.writeSql(sql).then(function (object) {
|
|
365
|
+
(0, _common.merge)(result, (0, _common.encodeGraph)((0, _common.wrapObject)(object, prefix)));
|
|
366
|
+
});
|
|
349
367
|
}));
|
|
350
368
|
|
|
351
|
-
case
|
|
352
|
-
|
|
369
|
+
case 20:
|
|
370
|
+
log('dbWrite', rootChange, result);
|
|
371
|
+
return _context8.abrupt("return", result);
|
|
353
372
|
|
|
354
|
-
case
|
|
373
|
+
case 22:
|
|
355
374
|
case "end":
|
|
356
|
-
return
|
|
375
|
+
return _context8.stop();
|
|
357
376
|
}
|
|
358
377
|
}
|
|
359
378
|
}, _callee7);
|
package/cjs/filter/getSql.js
CHANGED
|
@@ -19,7 +19,7 @@ var _sqlTemplateTag = _interopRequireWildcard(require("sql-template-tag"));
|
|
|
19
19
|
|
|
20
20
|
var _getAst = _interopRequireDefault(require("./getAst.js"));
|
|
21
21
|
|
|
22
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18;
|
|
22
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22;
|
|
23
23
|
|
|
24
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
25
|
|
|
@@ -36,61 +36,72 @@ function getSql(filter, getLookupSql) {
|
|
|
36
36
|
|
|
37
37
|
switch (ast[0]) {
|
|
38
38
|
case '$eq':
|
|
39
|
-
return (0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["", "
|
|
39
|
+
if (ast[2] === null) return (0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["", " IS NULL"])), lhs(ast[1]));
|
|
40
|
+
return (0, _sqlTemplateTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["", " = ", ""])), lhs(ast[1]), ast[2]);
|
|
40
41
|
|
|
41
|
-
case '$
|
|
42
|
-
return (0, _sqlTemplateTag.default)(
|
|
42
|
+
case '$neq':
|
|
43
|
+
if (ast[2] === null) return (0, _sqlTemplateTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["", " IS NOT NULL"])), lhs(ast[1]));
|
|
44
|
+
return (0, _sqlTemplateTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["", " <> ", ""])), lhs(ast[1]), ast[2]);
|
|
43
45
|
|
|
44
46
|
case '$lt':
|
|
45
|
-
return (0, _sqlTemplateTag.default)(
|
|
47
|
+
return (0, _sqlTemplateTag.default)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["", " < ", ""])), lhs(ast[1]), ast[2]);
|
|
46
48
|
|
|
47
49
|
case '$lte':
|
|
48
|
-
return (0, _sqlTemplateTag.default)(
|
|
50
|
+
return (0, _sqlTemplateTag.default)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["", " <= ", ""])), lhs(ast[1]), ast[2]);
|
|
49
51
|
|
|
50
52
|
case '$gt':
|
|
51
|
-
return (0, _sqlTemplateTag.default)(
|
|
53
|
+
return (0, _sqlTemplateTag.default)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["", " > ", ""])), lhs(ast[1]), ast[2]);
|
|
52
54
|
|
|
53
55
|
case '$gte':
|
|
54
|
-
return (0, _sqlTemplateTag.default)(
|
|
56
|
+
return (0, _sqlTemplateTag.default)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteralLoose2.default)(["", " >= ", ""])), lhs(ast[1]), ast[2]);
|
|
57
|
+
|
|
58
|
+
case '$re':
|
|
59
|
+
return (0, _sqlTemplateTag.default)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["", " ~ ", ""])), lhs(ast[1]), ast[2]);
|
|
60
|
+
|
|
61
|
+
case '$ire':
|
|
62
|
+
return (0, _sqlTemplateTag.default)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["", " ~* ", ""])), lhs(ast[1]), ast[2]);
|
|
55
63
|
|
|
56
64
|
case '$in':
|
|
57
|
-
return (0, _sqlTemplateTag.default)(
|
|
65
|
+
return (0, _sqlTemplateTag.default)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["", " IN (", ")"])), lhs(ast[1]), (0, _sqlTemplateTag.join)(ast[2]));
|
|
58
66
|
|
|
59
67
|
case '$nin':
|
|
60
|
-
return (0, _sqlTemplateTag.default)(
|
|
68
|
+
return (0, _sqlTemplateTag.default)(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteralLoose2.default)(["", " NOT IN (", ")"])), lhs(ast[1]), (0, _sqlTemplateTag.join)(ast[2]));
|
|
61
69
|
|
|
62
70
|
case '$cts':
|
|
63
|
-
return (0, _sqlTemplateTag.default)(
|
|
71
|
+
return (0, _sqlTemplateTag.default)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["", " @> ", ""])), lhs(ast[1]), ast[2]);
|
|
64
72
|
|
|
65
73
|
case '$ctd':
|
|
66
|
-
return (0, _sqlTemplateTag.default)(
|
|
74
|
+
return (0, _sqlTemplateTag.default)(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteralLoose2.default)(["", " <@ ", ""])), lhs(ast[1]), ast[2]);
|
|
67
75
|
|
|
68
76
|
case '$ovp':
|
|
69
|
-
return (0, _sqlTemplateTag.default)(
|
|
77
|
+
return (0, _sqlTemplateTag.default)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteralLoose2.default)(["", " && ", ""])), lhs(ast[1]), ast[2]);
|
|
70
78
|
|
|
71
79
|
case '$and':
|
|
72
|
-
return (0, _sqlTemplateTag.default)(
|
|
80
|
+
return (0, _sqlTemplateTag.default)(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteralLoose2.default)(["(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context = ast[1]).call(_context, function (node) {
|
|
73
81
|
return getNodeSql(node);
|
|
74
82
|
}), ") AND ("));
|
|
75
83
|
|
|
76
84
|
case '$or':
|
|
77
|
-
return (0, _sqlTemplateTag.default)(
|
|
85
|
+
return (0, _sqlTemplateTag.default)(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteralLoose2.default)(["(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context2 = ast[1]).call(_context2, function (node) {
|
|
78
86
|
return getNodeSql(node);
|
|
79
87
|
}), ") OR ("));
|
|
80
88
|
|
|
81
89
|
case '$not':
|
|
82
|
-
return (0, _sqlTemplateTag.default)(
|
|
90
|
+
return (0, _sqlTemplateTag.default)(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteralLoose2.default)(["NOT (", ")"])), getNodeSql(ast[1]));
|
|
83
91
|
|
|
84
92
|
case '$any':
|
|
85
|
-
return (0, _sqlTemplateTag.default)(
|
|
93
|
+
return (0, _sqlTemplateTag.default)(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteralLoose2.default)(["(SELECT bool_or(", ") FROM UNNEST(", ") ", ")"])), getNodeSql(ast[3]), lhs(ast[1]), lhs(ast[2]));
|
|
86
94
|
|
|
87
95
|
case '$all':
|
|
88
|
-
return (0, _sqlTemplateTag.default)(
|
|
96
|
+
return (0, _sqlTemplateTag.default)(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteralLoose2.default)(["(SELECT bool_and(", ") FROM UNNEST(", ") ", ")"])), getNodeSql(ast[3]), lhs(ast[1]), lhs(ast[2]));
|
|
89
97
|
|
|
90
98
|
case '$has':
|
|
91
|
-
return (0, _sqlTemplateTag.default)(
|
|
99
|
+
return (0, _sqlTemplateTag.default)(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteralLoose2.default)(["(SELECT bool_or(", ") FROM UNNEST(", ") ", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context3 = ast[3]).call(_context3, function (node) {
|
|
92
100
|
return getNodeSql(node);
|
|
93
101
|
}), ") AND bool_or("), lhs(ast[1]), lhs(ast[2]));
|
|
102
|
+
|
|
103
|
+
default:
|
|
104
|
+
throw Error('pg.getSql_unknown_operator: ' + ast[0]);
|
|
94
105
|
}
|
|
95
106
|
}
|
|
96
107
|
|
package/cjs/index.js
CHANGED
|
@@ -12,6 +12,11 @@ var _Db = _interopRequireDefault(require("./Db.js"));
|
|
|
12
12
|
var _excluded = ["transactionDb"],
|
|
13
13
|
_excluded2 = ["transactionDb"];
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* @param {{table?: string, idCol?: string, verCol?: string, links?: object, connection?: any}} param0
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
15
20
|
var pg = function pg(_ref) {
|
|
16
21
|
var table = _ref.table,
|
|
17
22
|
idCol = _ref.idCol,
|
package/cjs/sql/getArgSql.js
CHANGED
|
@@ -41,7 +41,7 @@ var _clauses = require("./clauses.js");
|
|
|
41
41
|
|
|
42
42
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
|
|
43
43
|
|
|
44
|
-
var _excluded = ["$first", "$last", "$after", "$before", "$since", "$until", "$cursor"],
|
|
44
|
+
var _excluded = ["$first", "$last", "$after", "$before", "$since", "$until", "$all", "$cursor"],
|
|
45
45
|
_excluded2 = ["$order"];
|
|
46
46
|
|
|
47
47
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -66,6 +66,7 @@ function getArgSql(_ref, options) {
|
|
|
66
66
|
$before = _ref.$before,
|
|
67
67
|
$since = _ref.$since,
|
|
68
68
|
$until = _ref.$until,
|
|
69
|
+
$all = _ref.$all,
|
|
69
70
|
_ = _ref.$cursor,
|
|
70
71
|
rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
71
72
|
var $order = rest.$order,
|
|
@@ -85,7 +86,7 @@ function getArgSql(_ref, options) {
|
|
|
85
86
|
return (0, _getMeta.getArgMeta)(key, prefix, idCol);
|
|
86
87
|
};
|
|
87
88
|
|
|
88
|
-
var hasRangeArg = $before || $after || $since || $until || $first || $last || $order;
|
|
89
|
+
var hasRangeArg = $before || $after || $since || $until || $first || $last || $all || $order;
|
|
89
90
|
var key;
|
|
90
91
|
var where = [];
|
|
91
92
|
|
|
@@ -99,6 +100,12 @@ function getArgSql(_ref, options) {
|
|
|
99
100
|
where: where,
|
|
100
101
|
limit: 1
|
|
101
102
|
};
|
|
103
|
+
|
|
104
|
+
if ((0, _common.isEmpty)(rest)) {
|
|
105
|
+
// TODO: Allow these.
|
|
106
|
+
throw Error('pg_arg.pagination_only_unsupported in ' + prefix);
|
|
107
|
+
}
|
|
108
|
+
|
|
102
109
|
var orderCols = (0, _map.default)(_context = $order || [idCol]).call(_context, lookup);
|
|
103
110
|
(0, _forEach.default)(_context2 = (0, _entries.default)({
|
|
104
111
|
$after: $after,
|
|
@@ -108,11 +115,10 @@ function getArgSql(_ref, options) {
|
|
|
108
115
|
})).call(_context2, function (_ref2) {
|
|
109
116
|
var name = _ref2[0],
|
|
110
117
|
value = _ref2[1];
|
|
111
|
-
// if ($after) where.push(getBoundCond(orderCols, $after, '$after'));
|
|
112
118
|
if (value) where.push(getBoundCond(orderCols, value, name));
|
|
113
119
|
});
|
|
114
120
|
var orderQuery = $order && (0, _clauses.getJsonBuildObject)({
|
|
115
|
-
$order: (0, _sqlTemplateTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["
|
|
121
|
+
$order: (0, _sqlTemplateTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["", "::jsonb"])), (0, _stringify.default)($order))
|
|
116
122
|
});
|
|
117
123
|
var cursorQuery = (0, _clauses.getJsonBuildObject)({
|
|
118
124
|
$cursor: (0, _sqlTemplateTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["jsonb_build_array(", ")"])), (0, _sqlTemplateTag.join)(orderCols))
|
|
@@ -130,7 +136,7 @@ function getArgSql(_ref, options) {
|
|
|
130
136
|
|
|
131
137
|
function getBoundCond(orderCols, bound, kind) {
|
|
132
138
|
if (!(0, _isArray.default)(bound)) {
|
|
133
|
-
throw Error('bad_query bound:' + (0, _stringify.default)(bound));
|
|
139
|
+
throw Error('pg_arg.bad_query bound : ' + (0, _stringify.default)(bound));
|
|
134
140
|
}
|
|
135
141
|
|
|
136
142
|
var lhs = orderCols[0];
|
package/cjs/sql/getMeta.js
CHANGED
|
@@ -11,13 +11,15 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
11
11
|
exports.__esModule = true;
|
|
12
12
|
exports.getArgMeta = exports.getIdMeta = void 0;
|
|
13
13
|
|
|
14
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
15
|
+
|
|
14
16
|
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/taggedTemplateLiteralLoose"));
|
|
15
17
|
|
|
16
18
|
var _sqlTemplateTag = _interopRequireWildcard(require("sql-template-tag"));
|
|
17
19
|
|
|
18
20
|
var _clauses = require("./clauses");
|
|
19
21
|
|
|
20
|
-
var _templateObject, _templateObject2;
|
|
22
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
21
23
|
|
|
22
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
25
|
|
|
@@ -36,7 +38,9 @@ exports.getIdMeta = getIdMeta;
|
|
|
36
38
|
var getArgMeta = function getArgMeta(key, prefix, idCol) {
|
|
37
39
|
return (0, _clauses.getJsonBuildObject)({
|
|
38
40
|
$key: key,
|
|
39
|
-
$ref: (0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["
|
|
41
|
+
$ref: (0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["jsonb_build_array(", ", \"", "\")"])), (0, _sqlTemplateTag.join)((0, _map.default)(prefix).call(prefix, function (k) {
|
|
42
|
+
return (0, _sqlTemplateTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["", "::text"])), k);
|
|
43
|
+
})), (0, _sqlTemplateTag.raw)(idCol)),
|
|
40
44
|
$ver: _clauses.nowTimestamp
|
|
41
45
|
});
|
|
42
46
|
};
|
package/cjs/sql/upsert.js
CHANGED
|
@@ -48,7 +48,7 @@ function patch(object, arg, options) {
|
|
|
48
48
|
if (!where || !where.length) throw Error('pg_write.no_condition');
|
|
49
49
|
var row = object; // objectToRow(object, options);
|
|
50
50
|
|
|
51
|
-
return (0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n UPDATE \"", "\" SET ", "\n WHERE ", "\n RETURNING (", " || ", ")"])), (0, _sqlTemplateTag.raw)(table), (0, _clauses.getUpdates)(row, options), (0, _sqlTemplateTag.join)(where, " AND "), (0, _clauses.getSelectCols)(table), meta);
|
|
51
|
+
return (0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n UPDATE \"", "\" SET ", "\n WHERE ", "\n LIMIT 1\n RETURNING (", " || ", ")"])), (0, _sqlTemplateTag.raw)(table), (0, _clauses.getUpdates)(row, options), (0, _sqlTemplateTag.join)(where, " AND "), (0, _clauses.getSelectCols)(table), meta);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
function put(object, arg, options) {
|
package/cjs/test/setup.js
CHANGED
|
@@ -3,99 +3,223 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.
|
|
6
|
+
exports.setupPgServer = setupPgServer;
|
|
7
|
+
exports.teardownPgServer = teardownPgServer;
|
|
8
|
+
exports.resetTables = resetTables;
|
|
9
|
+
exports.getPool = getPool;
|
|
10
|
+
|
|
11
|
+
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/taggedTemplateLiteralLoose"));
|
|
7
12
|
|
|
8
13
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
|
9
14
|
|
|
10
|
-
var
|
|
15
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
11
16
|
|
|
12
|
-
var
|
|
17
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
13
18
|
|
|
14
|
-
var
|
|
19
|
+
var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set-timeout"));
|
|
20
|
+
|
|
21
|
+
var _child_process = require("child_process");
|
|
22
|
+
|
|
23
|
+
var _util = require("util");
|
|
15
24
|
|
|
16
25
|
var _sqlTemplateTag = _interopRequireDefault(require("sql-template-tag"));
|
|
17
26
|
|
|
18
|
-
var
|
|
27
|
+
var _pg = require("pg");
|
|
28
|
+
|
|
29
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
30
|
+
|
|
31
|
+
var connOptions = {
|
|
32
|
+
host: 'localhost',
|
|
33
|
+
port: 15432,
|
|
34
|
+
user: 'postgres',
|
|
35
|
+
password: 'graffy',
|
|
36
|
+
database: 'postgres'
|
|
37
|
+
};
|
|
38
|
+
var pool = null;
|
|
39
|
+
var execFile = (0, _util.promisify)(_child_process.execFile);
|
|
40
|
+
|
|
41
|
+
var sleep = function sleep(ms) {
|
|
42
|
+
return new _promise.default(function (res) {
|
|
43
|
+
return (0, _setTimeout2.default)(res, ms);
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var isPgReady = /*#__PURE__*/function () {
|
|
48
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
49
|
+
var client;
|
|
50
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
51
|
+
while (1) {
|
|
52
|
+
switch (_context.prev = _context.next) {
|
|
53
|
+
case 0:
|
|
54
|
+
_context.prev = 0;
|
|
55
|
+
client = new _pg.Client(connOptions);
|
|
56
|
+
_context.next = 4;
|
|
57
|
+
return client.connect();
|
|
19
58
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
59
|
+
case 4:
|
|
60
|
+
_context.next = 6;
|
|
61
|
+
return client.end();
|
|
62
|
+
|
|
63
|
+
case 6:
|
|
64
|
+
return _context.abrupt("return", true);
|
|
65
|
+
|
|
66
|
+
case 9:
|
|
67
|
+
_context.prev = 9;
|
|
68
|
+
_context.t0 = _context["catch"](0);
|
|
69
|
+
return _context.abrupt("return", false);
|
|
23
70
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
71
|
+
case 12:
|
|
72
|
+
case "end":
|
|
73
|
+
return _context.stop();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, _callee, null, [[0, 9]]);
|
|
77
|
+
}));
|
|
78
|
+
|
|
79
|
+
return function isPgReady() {
|
|
80
|
+
return _ref.apply(this, arguments);
|
|
81
|
+
};
|
|
82
|
+
}();
|
|
83
|
+
|
|
84
|
+
function setupPgServer() {
|
|
85
|
+
return _setupPgServer.apply(this, arguments);
|
|
86
|
+
}
|
|
27
87
|
|
|
88
|
+
function _setupPgServer() {
|
|
89
|
+
_setupPgServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
28
90
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
29
91
|
while (1) {
|
|
30
92
|
switch (_context2.prev = _context2.next) {
|
|
31
93
|
case 0:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
94
|
+
_context2.prev = 0;
|
|
95
|
+
_context2.next = 3;
|
|
96
|
+
return execFile('docker', ['run', '-d', '--name', 'graffypg', '-p', connOptions.port + ":5432", '-e', "POSTGRES_PASSWORD=" + connOptions.password, 'postgres:alpine']);
|
|
97
|
+
|
|
98
|
+
case 3:
|
|
99
|
+
_context2.next = 9;
|
|
100
|
+
break;
|
|
101
|
+
|
|
102
|
+
case 5:
|
|
103
|
+
_context2.prev = 5;
|
|
104
|
+
_context2.t0 = _context2["catch"](0);
|
|
105
|
+
// eslint-disable-next-line no-console
|
|
106
|
+
console.error('Could not start a test Postgres server using Docker.\n' + 'Possible reasons:\n' + '1. You might not have Docker installed.\n' + '2. The last test run might not have exited properly.\n' + ' Run yarn pg:clean to fix this.\n' + 'Docker might have printed a detailed error message above.');
|
|
107
|
+
throw _context2.t0;
|
|
108
|
+
|
|
109
|
+
case 9:
|
|
110
|
+
_context2.next = 11;
|
|
111
|
+
return isPgReady(connOptions.port);
|
|
112
|
+
|
|
113
|
+
case 11:
|
|
114
|
+
if (_context2.sent) {
|
|
115
|
+
_context2.next = 16;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
_context2.next = 14;
|
|
120
|
+
return sleep(200);
|
|
121
|
+
|
|
122
|
+
case 14:
|
|
123
|
+
_context2.next = 9;
|
|
124
|
+
break;
|
|
125
|
+
|
|
126
|
+
case 16:
|
|
127
|
+
// console.log('Postgres is up in', Date.now() - start, 'ms');
|
|
128
|
+
pool = new _pg.Pool(connOptions);
|
|
129
|
+
|
|
130
|
+
case 17:
|
|
131
|
+
case "end":
|
|
132
|
+
return _context2.stop();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, _callee2, null, [[0, 5]]);
|
|
136
|
+
}));
|
|
137
|
+
return _setupPgServer.apply(this, arguments);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function teardownPgServer() {
|
|
141
|
+
return _teardownPgServer.apply(this, arguments);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function _teardownPgServer() {
|
|
145
|
+
_teardownPgServer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
146
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
147
|
+
while (1) {
|
|
148
|
+
switch (_context3.prev = _context3.next) {
|
|
149
|
+
case 0:
|
|
150
|
+
if (!pool) {
|
|
151
|
+
_context3.next = 4;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
_context3.next = 3;
|
|
156
|
+
return pool.end();
|
|
157
|
+
|
|
158
|
+
case 3:
|
|
159
|
+
pool = null;
|
|
160
|
+
|
|
161
|
+
case 4:
|
|
162
|
+
_context3.next = 6;
|
|
163
|
+
return execFile('docker', ['rm', '-f', 'graffypg']);
|
|
164
|
+
|
|
165
|
+
case 6:
|
|
166
|
+
case "end":
|
|
167
|
+
return _context3.stop();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}, _callee3);
|
|
171
|
+
}));
|
|
172
|
+
return _teardownPgServer.apply(this, arguments);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
function resetTables() {
|
|
176
|
+
return _resetTables.apply(this, arguments);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function _resetTables() {
|
|
180
|
+
_resetTables = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
181
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
182
|
+
while (1) {
|
|
183
|
+
switch (_context4.prev = _context4.next) {
|
|
184
|
+
case 0:
|
|
185
|
+
if (pool) {
|
|
186
|
+
_context4.next = 2;
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
throw Error('No pool; Did not setup PG or already torn down.');
|
|
191
|
+
|
|
192
|
+
case 2:
|
|
193
|
+
_context4.next = 4;
|
|
194
|
+
return pool.query((0, _sqlTemplateTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n CREATE EXTENSION IF NOT EXISTS \"pgcrypto\"\n "]))));
|
|
78
195
|
|
|
79
196
|
case 4:
|
|
80
|
-
|
|
81
|
-
return pool.query((0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n
|
|
197
|
+
_context4.next = 6;
|
|
198
|
+
return pool.query((0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n DROP TABLE IF EXISTS \"users\";\n "]))));
|
|
82
199
|
|
|
83
200
|
case 6:
|
|
84
|
-
|
|
85
|
-
return
|
|
86
|
-
return "name_" + i;
|
|
87
|
-
});
|
|
201
|
+
_context4.next = 8;
|
|
202
|
+
return pool.query((0, _sqlTemplateTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n CREATE UNLOGGED TABLE \"users\" (\n \"id\" uuid DEFAULT gen_random_uuid() PRIMARY KEY,\n \"name\" text,\n \"settings\" jsonb,\n \"email\" text UNIQUE,\n \"version\" int8 NOT NULL\n );\n "]))));
|
|
88
203
|
|
|
89
204
|
case 8:
|
|
90
|
-
|
|
91
|
-
return pool.
|
|
205
|
+
_context4.next = 10;
|
|
206
|
+
return pool.query((0, _sqlTemplateTag.default)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["\n DROP TABLE IF EXISTS \"posts\";\n "]))));
|
|
92
207
|
|
|
93
208
|
case 10:
|
|
209
|
+
_context4.next = 12;
|
|
210
|
+
return pool.query((0, _sqlTemplateTag.default)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["\n CREATE UNLOGGED TABLE \"posts\" (\n \"id\" uuid DEFAULT gen_random_uuid() PRIMARY KEY,\n \"title\" text,\n \"authorId\" text,\n \"version\" int8 NOT NULL\n );\n "]))));
|
|
211
|
+
|
|
212
|
+
case 12:
|
|
94
213
|
case "end":
|
|
95
|
-
return
|
|
214
|
+
return _context4.stop();
|
|
96
215
|
}
|
|
97
216
|
}
|
|
98
|
-
},
|
|
217
|
+
}, _callee4);
|
|
99
218
|
}));
|
|
100
|
-
return
|
|
219
|
+
return _resetTables.apply(this, arguments);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function getPool() {
|
|
223
|
+
if (!pool) throw Error('No pool; Did not setup PG or already torn down.');
|
|
224
|
+
return pool;
|
|
101
225
|
}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@graffy/pg",
|
|
3
3
|
"description": "The standard Postgres module for Graffy. Each instance this module mounts a Postgres table as a Graffy subtree.",
|
|
4
4
|
"author": "aravind (https://github.com/aravindet)",
|
|
5
|
-
"version": "0.15.
|
|
5
|
+
"version": "0.15.8-alpha.1",
|
|
6
6
|
"main": "./cjs/index.js",
|
|
7
7
|
"types": "./types/index.d.ts",
|
|
8
8
|
"repository": {
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@babel/runtime-corejs3": "^7.15.3",
|
|
15
15
|
"pg": "^8.7.1",
|
|
16
|
-
"@graffy/common": "0.15.
|
|
16
|
+
"@graffy/common": "0.15.8-alpha.1",
|
|
17
17
|
"debug": "^4.3.2",
|
|
18
18
|
"sql-template-tag": "^4.0.0",
|
|
19
|
-
"@graffy/testing": "0.15.
|
|
19
|
+
"@graffy/testing": "0.15.8-alpha.1"
|
|
20
20
|
}
|
|
21
21
|
}
|
package/types/Db.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export default class Db {
|
|
2
2
|
constructor(connection: any);
|
|
3
3
|
client: any;
|
|
4
|
-
query(
|
|
4
|
+
query(sql: any): Promise<any>;
|
|
5
5
|
readSql(sql: any): Promise<any>;
|
|
6
6
|
writeSql(sql: any): Promise<any>;
|
|
7
7
|
read(rootQuery: any, tableOptions: any): Promise<any>;
|
|
8
|
-
write(rootChange: any, tableOptions: any): Promise<any>;
|
|
8
|
+
write(rootChange: any, tableOptions: any): Promise<any[]>;
|
|
9
9
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export function pg({ table, idCol, verCol, links, connection }: {
|
|
2
|
-
table
|
|
3
|
-
idCol
|
|
4
|
-
verCol
|
|
5
|
-
links
|
|
6
|
-
connection
|
|
2
|
+
table?: string;
|
|
3
|
+
idCol?: string;
|
|
4
|
+
verCol?: string;
|
|
5
|
+
links?: object;
|
|
6
|
+
connection?: any;
|
|
7
7
|
}): (store: any) => void;
|
package/types/sql/getArgSql.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
@typedef { import('sql-template-tag').Sql } Sql
|
|
8
8
|
@return {{ meta: Sql, where: Sql[], order?: Sql, limit: number }}
|
|
9
9
|
*/
|
|
10
|
-
export default function getArgSql({ $first, $last, $after, $before, $since, $until, $cursor: _, ...rest }: object, options: object): {
|
|
10
|
+
export default function getArgSql({ $first, $last, $after, $before, $since, $until, $all, $cursor: _, ...rest }: object, options: object): {
|
|
11
11
|
meta: Sql;
|
|
12
12
|
where: Sql[];
|
|
13
13
|
order?: Sql;
|