@graffy/pg 0.15.6-alpha.1 → 0.15.8-alpha.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/cjs/Db.js +392 -0
- package/cjs/filter/filterObject.js +3 -18
- package/cjs/filter/getAst.js +3 -1
- package/cjs/filter/getSql.js +33 -22
- package/cjs/index.js +65 -174
- package/cjs/link/index.js +0 -47
- package/cjs/sql/clauses.js +92 -0
- package/cjs/sql/getArgSql.js +98 -84
- package/cjs/sql/{getIdMeta.js → getMeta.js} +24 -6
- package/cjs/sql/select.js +9 -24
- package/cjs/sql/upsert.js +19 -156
- package/cjs/{sql → test}/expectSql.js +1 -0
- package/cjs/test/setup.js +189 -147
- package/package.json +5 -6
- package/types/Db.d.ts +9 -0
- package/types/index.d.ts +7 -2
- package/types/link/index.d.ts +0 -3
- package/types/sql/clauses.d.ts +8 -0
- package/types/sql/getArgSql.d.ts +17 -18
- package/types/sql/getMeta.d.ts +4 -0
- package/types/sql/select.d.ts +2 -7
- package/cjs/dbRead.js +0 -228
- package/cjs/dbWrite.js +0 -158
- package/cjs/options.js +0 -160
- package/cjs/pool.js +0 -42
- package/cjs/sql/getSelectCols.js +0 -47
- package/types/dbRead.d.ts +0 -1
- package/types/dbWrite.d.ts +0 -1
- package/types/options.d.ts +0 -23
- package/types/pool.d.ts +0 -2
- package/types/sql/getIdMeta.d.ts +0 -4
- package/types/sql/getSelectCols.d.ts +0 -1
package/cjs/Db.js
ADDED
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
|
|
4
|
+
|
|
5
|
+
var _Array$from = require("@babel/runtime-corejs3/core-js-stable/array/from");
|
|
6
|
+
|
|
7
|
+
var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
|
|
8
|
+
|
|
9
|
+
var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
|
|
10
|
+
|
|
11
|
+
var _bindInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/bind");
|
|
12
|
+
|
|
13
|
+
var _Array$isArray = require("@babel/runtime-corejs3/core-js-stable/array/is-array");
|
|
14
|
+
|
|
15
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
16
|
+
|
|
17
|
+
exports.__esModule = true;
|
|
18
|
+
exports.default = void 0;
|
|
19
|
+
|
|
20
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
|
21
|
+
|
|
22
|
+
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
|
|
23
|
+
|
|
24
|
+
var _flat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/flat"));
|
|
25
|
+
|
|
26
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
|
27
|
+
|
|
28
|
+
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
29
|
+
|
|
30
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
31
|
+
|
|
32
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
33
|
+
|
|
34
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
35
|
+
|
|
36
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
37
|
+
|
|
38
|
+
var _pg = require("pg");
|
|
39
|
+
|
|
40
|
+
var _common = require("@graffy/common");
|
|
41
|
+
|
|
42
|
+
var _index = require("./link/index.js");
|
|
43
|
+
|
|
44
|
+
var _select = require("./sql/select");
|
|
45
|
+
|
|
46
|
+
var _index2 = require("./sql/index.js");
|
|
47
|
+
|
|
48
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
49
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
56
|
+
var log = (0, _debug.default)('graffy:pg:db');
|
|
57
|
+
|
|
58
|
+
var Db = /*#__PURE__*/function () {
|
|
59
|
+
function Db(connection) {
|
|
60
|
+
if (typeof connection === 'object' && connection && (connection instanceof _pg.Pool || connection instanceof _pg.Client)) {
|
|
61
|
+
this.client = connection;
|
|
62
|
+
} else {
|
|
63
|
+
this.client = new _pg.Pool(connection);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var _proto = Db.prototype;
|
|
68
|
+
|
|
69
|
+
_proto.query = /*#__PURE__*/function () {
|
|
70
|
+
var _query = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(sql) {
|
|
71
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
72
|
+
while (1) {
|
|
73
|
+
switch (_context.prev = _context.next) {
|
|
74
|
+
case 0:
|
|
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);
|
|
83
|
+
|
|
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:
|
|
90
|
+
case "end":
|
|
91
|
+
return _context.stop();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}, _callee, this, [[2, 8]]);
|
|
95
|
+
}));
|
|
96
|
+
|
|
97
|
+
function query(_x) {
|
|
98
|
+
return _query.apply(this, arguments);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return query;
|
|
102
|
+
}();
|
|
103
|
+
|
|
104
|
+
_proto.readSql = /*#__PURE__*/function () {
|
|
105
|
+
var _readSql = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(sql) {
|
|
106
|
+
var _context2;
|
|
107
|
+
|
|
108
|
+
var result;
|
|
109
|
+
return _regenerator.default.wrap(function _callee2$(_context3) {
|
|
110
|
+
while (1) {
|
|
111
|
+
switch (_context3.prev = _context3.next) {
|
|
112
|
+
case 0:
|
|
113
|
+
_context3.next = 2;
|
|
114
|
+
return this.query(sql);
|
|
115
|
+
|
|
116
|
+
case 2:
|
|
117
|
+
result = _context3.sent;
|
|
118
|
+
// Each row is an array, as there is only one column returned.
|
|
119
|
+
result = (0, _flat.default)(_context2 = result.rows).call(_context2);
|
|
120
|
+
log('Read result', result);
|
|
121
|
+
return _context3.abrupt("return", result);
|
|
122
|
+
|
|
123
|
+
case 6:
|
|
124
|
+
case "end":
|
|
125
|
+
return _context3.stop();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}, _callee2, this);
|
|
129
|
+
}));
|
|
130
|
+
|
|
131
|
+
function readSql(_x2) {
|
|
132
|
+
return _readSql.apply(this, arguments);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return readSql;
|
|
136
|
+
}();
|
|
137
|
+
|
|
138
|
+
_proto.writeSql = /*#__PURE__*/function () {
|
|
139
|
+
var _writeSql = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(sql) {
|
|
140
|
+
var res;
|
|
141
|
+
return _regenerator.default.wrap(function _callee3$(_context4) {
|
|
142
|
+
while (1) {
|
|
143
|
+
switch (_context4.prev = _context4.next) {
|
|
144
|
+
case 0:
|
|
145
|
+
_context4.next = 2;
|
|
146
|
+
return this.query(sql);
|
|
147
|
+
|
|
148
|
+
case 2:
|
|
149
|
+
res = _context4.sent;
|
|
150
|
+
log('Rows written', res.rowCount);
|
|
151
|
+
|
|
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:
|
|
163
|
+
case "end":
|
|
164
|
+
return _context4.stop();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}, _callee3, this);
|
|
168
|
+
}));
|
|
169
|
+
|
|
170
|
+
function writeSql(_x3) {
|
|
171
|
+
return _writeSql.apply(this, arguments);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return writeSql;
|
|
175
|
+
}();
|
|
176
|
+
|
|
177
|
+
_proto.read = /*#__PURE__*/function () {
|
|
178
|
+
var _read = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(rootQuery, tableOptions) {
|
|
179
|
+
var _this = this;
|
|
180
|
+
|
|
181
|
+
var idQueries, promises, results, refQuery, idCol, prefix, getByArgs, getByIds, query, _iterator, _step, node, args, _iterator2, _step2, childNode, childArgs;
|
|
182
|
+
|
|
183
|
+
return _regenerator.default.wrap(function _callee6$(_context7) {
|
|
184
|
+
while (1) {
|
|
185
|
+
switch (_context7.prev = _context7.next) {
|
|
186
|
+
case 0:
|
|
187
|
+
idQueries = {};
|
|
188
|
+
promises = [];
|
|
189
|
+
results = [];
|
|
190
|
+
refQuery = [];
|
|
191
|
+
idCol = tableOptions.idCol, prefix = tableOptions.prefix;
|
|
192
|
+
|
|
193
|
+
getByArgs = /*#__PURE__*/function () {
|
|
194
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(args, subQuery) {
|
|
195
|
+
var result, wrappedGraph;
|
|
196
|
+
return _regenerator.default.wrap(function _callee4$(_context5) {
|
|
197
|
+
while (1) {
|
|
198
|
+
switch (_context5.prev = _context5.next) {
|
|
199
|
+
case 0:
|
|
200
|
+
_context5.next = 2;
|
|
201
|
+
return _this.readSql((0, _select.selectByArgs)(args, tableOptions));
|
|
202
|
+
|
|
203
|
+
case 2:
|
|
204
|
+
result = _context5.sent;
|
|
205
|
+
(0, _common.add)(refQuery, (0, _index.linkResult)(result, subQuery, tableOptions));
|
|
206
|
+
wrappedGraph = (0, _common.encodeGraph)((0, _common.wrapObject)(result, prefix));
|
|
207
|
+
log('getByArgs', wrappedGraph);
|
|
208
|
+
(0, _common.merge)(results, wrappedGraph);
|
|
209
|
+
|
|
210
|
+
case 7:
|
|
211
|
+
case "end":
|
|
212
|
+
return _context5.stop();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}, _callee4);
|
|
216
|
+
}));
|
|
217
|
+
|
|
218
|
+
return function getByArgs(_x6, _x7) {
|
|
219
|
+
return _ref.apply(this, arguments);
|
|
220
|
+
};
|
|
221
|
+
}();
|
|
222
|
+
|
|
223
|
+
getByIds = /*#__PURE__*/function () {
|
|
224
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
|
|
225
|
+
var result;
|
|
226
|
+
return _regenerator.default.wrap(function _callee5$(_context6) {
|
|
227
|
+
while (1) {
|
|
228
|
+
switch (_context6.prev = _context6.next) {
|
|
229
|
+
case 0:
|
|
230
|
+
_context6.next = 2;
|
|
231
|
+
return _this.readSql((0, _select.selectByIds)((0, _keys.default)(idQueries), tableOptions));
|
|
232
|
+
|
|
233
|
+
case 2:
|
|
234
|
+
result = _context6.sent;
|
|
235
|
+
(0, _forEach.default)(result).call(result, function (object) {
|
|
236
|
+
var id = object[idCol];
|
|
237
|
+
var subQuery = idQueries[id];
|
|
238
|
+
(0, _common.add)(refQuery, (0, _index.linkResult)([object], subQuery, tableOptions));
|
|
239
|
+
var wrappedGraph = (0, _common.encodeGraph)((0, _common.wrapObject)(object, prefix));
|
|
240
|
+
log('getByIds', wrappedGraph);
|
|
241
|
+
(0, _common.merge)(results, wrappedGraph);
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
case 4:
|
|
245
|
+
case "end":
|
|
246
|
+
return _context6.stop();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}, _callee5);
|
|
250
|
+
}));
|
|
251
|
+
|
|
252
|
+
return function getByIds() {
|
|
253
|
+
return _ref2.apply(this, arguments);
|
|
254
|
+
};
|
|
255
|
+
}();
|
|
256
|
+
|
|
257
|
+
query = (0, _common.unwrap)(rootQuery, prefix);
|
|
258
|
+
|
|
259
|
+
for (_iterator = _createForOfIteratorHelperLoose(query); !(_step = _iterator()).done;) {
|
|
260
|
+
node = _step.value;
|
|
261
|
+
args = (0, _common.decodeArgs)(node);
|
|
262
|
+
|
|
263
|
+
if ((0, _common.isPlainObject)(args)) {
|
|
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
|
+
}
|
|
273
|
+
} else {
|
|
274
|
+
idQueries[node.key] = node.children;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
if (!(0, _common.isEmpty)(idQueries)) promises.push(getByIds());
|
|
279
|
+
_context7.next = 12;
|
|
280
|
+
return _promise.default.all(promises);
|
|
281
|
+
|
|
282
|
+
case 12:
|
|
283
|
+
log('dbRead', rootQuery, results);
|
|
284
|
+
return _context7.abrupt("return", (0, _sliceInstanceProperty(_common))((0, _common.finalize)(results, rootQuery), rootQuery).known || []);
|
|
285
|
+
|
|
286
|
+
case 14:
|
|
287
|
+
case "end":
|
|
288
|
+
return _context7.stop();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}, _callee6);
|
|
292
|
+
}));
|
|
293
|
+
|
|
294
|
+
function read(_x4, _x5) {
|
|
295
|
+
return _read.apply(this, arguments);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return read;
|
|
299
|
+
}();
|
|
300
|
+
|
|
301
|
+
_proto.write = /*#__PURE__*/function () {
|
|
302
|
+
var _write = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(rootChange, tableOptions) {
|
|
303
|
+
var _this2 = this;
|
|
304
|
+
|
|
305
|
+
var sqls, addToQuery, prefix, change, _iterator3, _step3, node, arg, object, result;
|
|
306
|
+
|
|
307
|
+
return _regenerator.default.wrap(function _callee7$(_context8) {
|
|
308
|
+
while (1) {
|
|
309
|
+
switch (_context8.prev = _context8.next) {
|
|
310
|
+
case 0:
|
|
311
|
+
sqls = [];
|
|
312
|
+
|
|
313
|
+
addToQuery = function addToQuery(sql) {
|
|
314
|
+
return sqls.push(sql);
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
prefix = tableOptions.prefix;
|
|
318
|
+
change = (0, _common.unwrap)(rootChange, prefix);
|
|
319
|
+
_iterator3 = _createForOfIteratorHelperLoose(change);
|
|
320
|
+
|
|
321
|
+
case 5:
|
|
322
|
+
if ((_step3 = _iterator3()).done) {
|
|
323
|
+
_context8.next = 17;
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
node = _step3.value;
|
|
328
|
+
|
|
329
|
+
if (!(0, _common.isRange)(node)) {
|
|
330
|
+
_context8.next = 9;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
throw Error(node.key === node.end ? 'pg_write.delete_unsupported' : 'pg_write.write_range_unsupported');
|
|
335
|
+
|
|
336
|
+
case 9:
|
|
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
|
+
}
|
|
345
|
+
|
|
346
|
+
if (!(object.$put && object.$put !== true)) {
|
|
347
|
+
_context8.next = 14;
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
throw Error('pg_write.partial_put_unsupported');
|
|
352
|
+
|
|
353
|
+
case 14:
|
|
354
|
+
object.$put ? addToQuery((0, _index2.put)(object, arg, tableOptions)) : addToQuery((0, _index2.patch)(object, arg, tableOptions));
|
|
355
|
+
|
|
356
|
+
case 15:
|
|
357
|
+
_context8.next = 5;
|
|
358
|
+
break;
|
|
359
|
+
|
|
360
|
+
case 17:
|
|
361
|
+
result = [];
|
|
362
|
+
_context8.next = 20;
|
|
363
|
+
return _promise.default.all((0, _map.default)(sqls).call(sqls, function (sql) {
|
|
364
|
+
return _this2.writeSql(sql).then(function (object) {
|
|
365
|
+
(0, _common.merge)(result, (0, _common.encodeGraph)((0, _common.wrapObject)(object, prefix)));
|
|
366
|
+
});
|
|
367
|
+
}));
|
|
368
|
+
|
|
369
|
+
case 20:
|
|
370
|
+
log('dbWrite', rootChange, result);
|
|
371
|
+
return _context8.abrupt("return", result);
|
|
372
|
+
|
|
373
|
+
case 22:
|
|
374
|
+
case "end":
|
|
375
|
+
return _context8.stop();
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}, _callee7);
|
|
379
|
+
}));
|
|
380
|
+
|
|
381
|
+
function write(_x8, _x9) {
|
|
382
|
+
return _write.apply(this, arguments);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
return write;
|
|
386
|
+
}();
|
|
387
|
+
|
|
388
|
+
return Db;
|
|
389
|
+
}();
|
|
390
|
+
|
|
391
|
+
exports.default = Db;
|
|
392
|
+
module.exports = exports.default;
|
|
@@ -11,7 +11,7 @@ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-s
|
|
|
11
11
|
|
|
12
12
|
var _common = require("@graffy/common");
|
|
13
13
|
|
|
14
|
-
var _getAst = require("./getAst.js");
|
|
14
|
+
var _getAst = _interopRequireDefault(require("./getAst.js"));
|
|
15
15
|
|
|
16
16
|
function filterObject(filter, object) {
|
|
17
17
|
function lookup(path) {
|
|
@@ -47,34 +47,19 @@ function filterObject(filter, object) {
|
|
|
47
47
|
return !(0, _isArray.default)(ast[2]) || !(0, _includes.default)(_context2 = ast[2]).call(_context2, lookup(ast[1]));
|
|
48
48
|
|
|
49
49
|
case '$cts':
|
|
50
|
-
throw Error('pgfilter.unimplemented');
|
|
51
|
-
|
|
52
50
|
case '$ctd':
|
|
53
|
-
throw Error('pgfilter.unimplemented');
|
|
54
|
-
|
|
55
51
|
case '$ovp':
|
|
56
|
-
throw Error('pgfilter.unimplemented');
|
|
57
|
-
|
|
58
52
|
case '$and':
|
|
59
|
-
throw Error('pgfilter.unimplemented');
|
|
60
|
-
|
|
61
53
|
case '$or':
|
|
62
|
-
throw Error('pgfilter.unimplemented');
|
|
63
|
-
|
|
64
54
|
case '$not':
|
|
65
|
-
throw Error('pgfilter.unimplemented');
|
|
66
|
-
|
|
67
55
|
case '$any':
|
|
68
|
-
throw Error('pgfilter.unimplemented');
|
|
69
|
-
|
|
70
56
|
case '$all':
|
|
71
|
-
throw Error('pgfilter.unimplemented');
|
|
72
|
-
|
|
73
57
|
case '$has':
|
|
58
|
+
throw Error('pgfilter.unimplemented');
|
|
74
59
|
}
|
|
75
60
|
}
|
|
76
61
|
|
|
77
|
-
var rootAst = (0, _getAst.
|
|
62
|
+
var rootAst = (0, _getAst.default)(filter);
|
|
78
63
|
return checkNode(rootAst);
|
|
79
64
|
}
|
|
80
65
|
|
package/cjs/filter/getAst.js
CHANGED
|
@@ -5,6 +5,8 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
exports.default = getAst;
|
|
7
7
|
|
|
8
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
|
|
9
|
+
|
|
8
10
|
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
|
|
9
11
|
|
|
10
12
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
@@ -64,7 +66,7 @@ function construct(node, prop, op) {
|
|
|
64
66
|
if (!node || typeof node !== 'object') {
|
|
65
67
|
if (op && prop) return [op, prop, node];
|
|
66
68
|
if (prop) return ['$eq', prop, node];
|
|
67
|
-
throw Error('pgast.expected_prop_before', node);
|
|
69
|
+
throw Error('pgast.expected_prop_before:' + (0, _stringify.default)(node));
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
if ((0, _isArray.default)(node)) {
|
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)(
|
|
73
|
-
return getNodeSql(node
|
|
80
|
+
return (0, _sqlTemplateTag.default)(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteralLoose2.default)(["(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context = ast[1]).call(_context, function (node) {
|
|
81
|
+
return getNodeSql(node);
|
|
74
82
|
}), ") AND ("));
|
|
75
83
|
|
|
76
84
|
case '$or':
|
|
77
|
-
return (0, _sqlTemplateTag.default)(
|
|
78
|
-
return getNodeSql(node
|
|
85
|
+
return (0, _sqlTemplateTag.default)(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteralLoose2.default)(["(", ")"])), (0, _sqlTemplateTag.join)((0, _map.default)(_context2 = ast[1]).call(_context2, function (node) {
|
|
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)(
|
|
92
|
-
return getNodeSql(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) {
|
|
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
|
|