@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 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 _now = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/date/now"));
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 _context12; var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"]; if (it) return _bindInstanceProperty(_context12 = (it = it.call(o)).next).call(_context12, 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."); }
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 _context11; if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context11 = Object.prototype.toString.call(o)).call(_context11, 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); }
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:dbwrap');
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(sqlQuery) {
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
- start = (0, _now.default)();
77
- sqlQuery.rowMode = 'array';
78
- _context.next = 4;
79
- return this.client.query(sqlQuery);
80
-
81
- case 4:
82
- res = _context.sent;
83
- duration = (0, _now.default)() - start;
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
- case 5:
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$(_context9) {
183
+ return _regenerator.default.wrap(function _callee6$(_context7) {
177
184
  while (1) {
178
- switch (_context9.prev = _context9.next) {
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 _context5;
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 (_context6.prev = _context6.next) {
198
+ switch (_context5.prev = _context5.next) {
194
199
  case 0:
195
- _context6.next = 2;
200
+ _context5.next = 2;
196
201
  return _this.readSql((0, _select.selectByArgs)(args, tableOptions));
197
202
 
198
203
  case 2:
199
- result = _context6.sent;
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, wrappedQuery, (0, _common.finalize)(wrappedGraph, wrappedQuery));
204
- (0, _common.merge)(results, (0, _common.finalize)(wrappedGraph, wrappedQuery));
207
+ log('getByArgs', wrappedGraph);
208
+ (0, _common.merge)(results, wrappedGraph);
205
209
 
206
- case 8:
210
+ case 7:
207
211
  case "end":
208
- return _context6.stop();
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$(_context8) {
226
+ return _regenerator.default.wrap(function _callee5$(_context6) {
223
227
  while (1) {
224
- switch (_context8.prev = _context8.next) {
228
+ switch (_context6.prev = _context6.next) {
225
229
  case 0:
226
- _context8.next = 2;
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 = _context8.sent;
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, wrappedQuery, (0, _common.finalize)(wrappedGraph, wrappedQuery));
240
- (0, _common.merge)(results, (0, _common.finalize)(wrappedGraph, wrappedQuery));
240
+ log('getByIds', wrappedGraph);
241
+ (0, _common.merge)(results, wrappedGraph);
241
242
  });
242
243
 
243
244
  case 4:
244
245
  case "end":
245
- return _context8.stop();
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
- promises.push(getByArgs(args, node.children));
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
- _context9.next = 12;
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 _context9.abrupt("return", (0, _sliceInstanceProperty(_common))(results, rootQuery).known || []);
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 _context9.stop();
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, _iterator2, _step2, node, object, arg;
305
+ var sqls, addToQuery, prefix, change, _iterator3, _step3, node, arg, object, result;
297
306
 
298
- return _regenerator.default.wrap(function _callee7$(_context10) {
307
+ return _regenerator.default.wrap(function _callee7$(_context8) {
299
308
  while (1) {
300
- switch (_context10.prev = _context10.next) {
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
- _iterator2 = _createForOfIteratorHelperLoose(change);
319
+ _iterator3 = _createForOfIteratorHelperLoose(change);
311
320
 
312
321
  case 5:
313
- if ((_step2 = _iterator2()).done) {
314
- _context10.next = 16;
322
+ if ((_step3 = _iterator3()).done) {
323
+ _context8.next = 17;
315
324
  break;
316
325
  }
317
326
 
318
- node = _step2.value;
327
+ node = _step3.value;
319
328
 
320
329
  if (!(0, _common.isRange)(node)) {
321
- _context10.next = 9;
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
- _context10.next = 13;
347
+ _context8.next = 14;
333
348
  break;
334
349
  }
335
350
 
336
351
  throw Error('pg_write.partial_put_unsupported');
337
352
 
338
- case 13:
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 14:
342
- _context10.next = 5;
356
+ case 15:
357
+ _context8.next = 5;
343
358
  break;
344
359
 
345
- case 16:
346
- _context10.next = 18;
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 18:
352
- return _context10.abrupt("return", rootChange);
369
+ case 20:
370
+ log('dbWrite', rootChange, result);
371
+ return _context8.abrupt("return", result);
353
372
 
354
- case 19:
373
+ case 22:
355
374
  case "end":
356
- return _context10.stop();
375
+ return _context8.stop();
357
376
  }
358
377
  }
359
378
  }, _callee7);
@@ -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)(["", " = ", ""])), lhs(ast[1]), ast[2]);
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 '$ne':
42
- return (0, _sqlTemplateTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["", " <> ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["", " < ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteralLoose2.default)(["", " <= ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteralLoose2.default)(["", " > ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteralLoose2.default)(["", " >= ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteralLoose2.default)(["", " IN (", ")"])), lhs(ast[1]), (0, _sqlTemplateTag.join)(ast[2]));
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)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteralLoose2.default)(["", " NOT IN (", ")"])), lhs(ast[1]), (0, _sqlTemplateTag.join)(ast[2]));
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)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["", " @> ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["", " <@ ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["", " && ", ""])), lhs(ast[1]), ast[2]);
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)(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteralLoose2.default)(["(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context = ast[1]).call(_context, function (node) {
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)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context2 = ast[1]).call(_context2, function (node) {
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)(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteralLoose2.default)(["NOT (", ")"])), getNodeSql(ast[1]));
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)(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteralLoose2.default)(["(SELECT bool_or(", ") FROM UNNEST(", ") ", ")"])), getNodeSql(ast[3]), lhs(ast[1]), lhs(ast[2]));
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)(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteralLoose2.default)(["(SELECT bool_and(", ") FROM UNNEST(", ") ", ")"])), getNodeSql(ast[3]), lhs(ast[1]), lhs(ast[2]));
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)(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteralLoose2.default)(["(SELECT bool_or(", ") FROM UNNEST(", ") ", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context3 = ast[3]).call(_context3, function (node) {
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,
@@ -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)(["jsonb_build_array(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)($order).call($order, lookup)))
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];
@@ -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)(["array[", ", \"", "\"]"])), (0, _sqlTemplateTag.join)(prefix), (0, _sqlTemplateTag.raw)(idCol)),
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.populate = populate;
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 _now = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/date/now"));
15
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
11
16
 
12
- var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/taggedTemplateLiteralLoose"));
17
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
13
18
 
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
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 _templateObject, _templateObject2, _templateObject3;
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
- function populate(_x) {
21
- return _populate.apply(this, arguments);
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
- function _populate() {
25
- _populate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(pool) {
26
- var insert, _insert;
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
- _insert = function _insert3() {
33
- _insert = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(type, number, builder) {
34
- var i, name, now;
35
- return _regenerator.default.wrap(function _callee$(_context) {
36
- while (1) {
37
- switch (_context.prev = _context.next) {
38
- case 0:
39
- if (builder === void 0) {
40
- builder = function builder() {};
41
- }
42
-
43
- i = 0;
44
-
45
- case 2:
46
- if (!(i < number)) {
47
- _context.next = 10;
48
- break;
49
- }
50
-
51
- name = builder(i) || {};
52
- now = (0, _now.default)(); // console.log('Inserting ', type, i);
53
-
54
- _context.next = 7;
55
- return pool.query((0, _sqlTemplateTag.default)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["INSERT INTO \"users\" (\n \"id\", \"name\", \"updatedAt\", \"version\"\n ) VALUES (\n ", ",\n ", ",\n ", ",\n ", "\n );"])), type + i, name, now, now));
56
-
57
- case 7:
58
- i++;
59
- _context.next = 2;
60
- break;
61
-
62
- case 10:
63
- case "end":
64
- return _context.stop();
65
- }
66
- }
67
- }, _callee);
68
- }));
69
- return _insert.apply(this, arguments);
70
- };
71
-
72
- insert = function _insert2(_x2, _x3, _x4) {
73
- return _insert.apply(this, arguments);
74
- };
75
-
76
- _context2.next = 4;
77
- return pool.query((0, _sqlTemplateTag.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n DROP TABLE IF EXISTS \"users\";\n "]))));
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
- _context2.next = 6;
81
- return pool.query((0, _sqlTemplateTag.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["\n CREATE TABLE \"users\" (\n \"id\" text PRIMARY KEY,\n \"name\" text,\n \"updatedAt\" int8 NOT NULL,\n \"version\" int8 NOT NULL\n );\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
- _context2.next = 8;
85
- return insert('user', 5, function (i) {
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
- _context2.next = 10;
91
- return pool.end();
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 _context2.stop();
214
+ return _context4.stop();
96
215
  }
97
216
  }
98
- }, _callee2);
217
+ }, _callee4);
99
218
  }));
100
- return _populate.apply(this, arguments);
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.7",
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.7",
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.7"
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(sqlQuery: any): Promise<any>;
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: any;
3
- idCol: any;
4
- verCol: any;
5
- links: any;
6
- connection: any;
2
+ table?: string;
3
+ idCol?: string;
4
+ verCol?: string;
5
+ links?: object;
6
+ connection?: any;
7
7
  }): (store: any) => void;
@@ -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;