query-core 0.1.5 → 0.1.9

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.
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var build_1 = require("./build");
4
4
  var query_1 = require("./query");
5
5
  var search_1 = require("./search");
6
- exports.postgre = 'postgre';
6
+ exports.postgres = 'postgres';
7
7
  exports.mssql = 'mssql';
8
8
  exports.mysql = 'mysql';
9
9
  exports.sqlite = 'sqlite';
@@ -33,7 +33,7 @@ var SearchBuilder = (function () {
33
33
  if (provider === search_1.oracle) {
34
34
  this.buildParam = query_1.buildOracleParam;
35
35
  }
36
- else if (provider === exports.postgre) {
36
+ else if (provider === exports.postgres) {
37
37
  this.buildParam = query_1.buildDollarParam;
38
38
  }
39
39
  else if (provider === exports.mssql) {
@@ -45,17 +45,25 @@ var SearchBuilder = (function () {
45
45
  }
46
46
  this.total = (total && total.length > 0 ? total : 'total');
47
47
  }
48
- SearchBuilder.prototype.search = function (s, limit, skip, fields) {
49
- var _this = this;
48
+ SearchBuilder.prototype.search = function (s, limit, offset, fields) {
49
+ var skip = 0;
50
+ if (typeof offset === 'number' && offset > 0) {
51
+ skip = offset;
52
+ }
50
53
  var st = (this.sort ? this.sort : 'sort');
51
54
  var sn = s[st];
52
55
  delete s[st];
53
- var x = (this.provider === exports.postgre ? 'ilike' : this.buildParam);
54
- var q2 = query_1.buildQuery(s, x, this.table, this.attributes, sn, fields, this.q, this.excluding, this.buildSort);
55
- if (this.fromDB) {
56
+ var x = (this.provider === exports.postgres ? 'ilike' : this.buildParam);
57
+ var q2 = this.buildQuery(s, x, this.table, this.attributes, sn, fields, this.q, this.excluding, this.buildSort);
58
+ if (!q2) {
59
+ throw new Error('Cannot build query');
60
+ }
61
+ var fn = this.fromDB;
62
+ if (fn) {
56
63
  return search_1.buildFromQuery(this.query, q2.query, q2.params, limit, skip, this.map, this.bools, this.provider, this.total).then(function (r) {
57
64
  if (r.list && r.list.length > 0) {
58
- r.list = r.list.map(function (o) { return _this.fromDB(o); });
65
+ r.list = r.list.map(function (o) { return fn(o); });
66
+ return r;
59
67
  }
60
68
  else {
61
69
  return r;
package/lib/batch.js CHANGED
@@ -91,7 +91,7 @@ var SqlBatchInserter = (function () {
91
91
  list.push(obj2);
92
92
  }
93
93
  }
94
- var stmt = build_1.buildToInsertBatch(list, this.table, this.attributes, this.param);
94
+ var stmt = build_1.buildToInsertBatch(list, this.table, this.attributes, this.param, this.version);
95
95
  if (stmt) {
96
96
  return this.exec(stmt.query, stmt.params);
97
97
  }
package/lib/build.js CHANGED
@@ -1,5 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ function params(length, p, from) {
4
+ if (from === undefined || from == null) {
5
+ from = 0;
6
+ }
7
+ var ps = [];
8
+ for (var i = 1; i <= length; i++) {
9
+ ps.push(p(i + from));
10
+ }
11
+ return ps;
12
+ }
13
+ exports.params = params;
3
14
  function select(obj, table, ks, buildParam, i) {
4
15
  if (!i) {
5
16
  i = 1;
@@ -20,15 +31,17 @@ function select(obj, table, ks, buildParam, i) {
20
31
  var args = [];
21
32
  for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
22
33
  var k = ks_1[_i];
23
- var field = (k.field ? k.field : k.name);
24
- cols.push(field + " = " + buildParam(i++));
25
- args.push(obj[k.name]);
34
+ if (k.name) {
35
+ var field = (k.field ? k.field : k.name);
36
+ cols.push(field + " = " + buildParam(i++));
37
+ args.push(obj[k.name]);
38
+ }
26
39
  }
27
40
  var query = "select * from " + table + " where " + cols.join(' and ');
28
41
  return { query: query, params: args };
29
42
  }
30
43
  else {
31
- return null;
44
+ return undefined;
32
45
  }
33
46
  }
34
47
  exports.select = select;
@@ -55,15 +68,17 @@ function exist(obj, table, ks, buildParam, col, i) {
55
68
  var args = [];
56
69
  for (var _i = 0, ks_2 = ks; _i < ks_2.length; _i++) {
57
70
  var k = ks_2[_i];
58
- var field = (k.field ? k.field : k.name);
59
- cols.push(field + " = " + buildParam(i++));
60
- args.push(obj[k.name]);
71
+ if (k.name) {
72
+ var field = (k.field ? k.field : k.name);
73
+ cols.push(field + " = " + buildParam(i++));
74
+ args.push(obj[k.name]);
75
+ }
61
76
  }
62
77
  var query = "select * from " + table + " where " + cols.join(' and ');
63
78
  return { query: query, params: args };
64
79
  }
65
80
  else {
66
- return null;
81
+ return undefined;
67
82
  }
68
83
  }
69
84
  exports.exist = exist;
@@ -87,15 +102,17 @@ function buildToDelete(obj, table, ks, buildParam, i) {
87
102
  var args = [];
88
103
  for (var _i = 0, ks_3 = ks; _i < ks_3.length; _i++) {
89
104
  var k = ks_3[_i];
90
- var field = (k.field ? k.field : k.name);
91
- cols.push(field + " = " + buildParam(i++));
92
- args.push(obj[k.name]);
105
+ if (k.name) {
106
+ var field = (k.field ? k.field : k.name);
107
+ cols.push(field + " = " + buildParam(i++));
108
+ args.push(obj[k.name]);
109
+ }
93
110
  }
94
111
  var query = "delete from " + table + " where " + cols.join(' and ');
95
112
  return { query: query, params: args };
96
113
  }
97
114
  else {
98
- return null;
115
+ return undefined;
99
116
  }
100
117
  }
101
118
  exports.buildToDelete = buildToDelete;
@@ -113,6 +130,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
113
130
  if (!i) {
114
131
  i = 1;
115
132
  }
133
+ var o = obj;
116
134
  var ks = Object.keys(attrs);
117
135
  var cols = [];
118
136
  var values = [];
@@ -120,7 +138,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
120
138
  var isVersion = false;
121
139
  for (var _i = 0, ks_4 = ks; _i < ks_4.length; _i++) {
122
140
  var k = ks_4[_i];
123
- var v = obj[k];
141
+ var v = o[k];
124
142
  var attr = attrs[k];
125
143
  if (attr && !attr.ignored && !attr.noinsert) {
126
144
  if (v === undefined || v == null) {
@@ -178,7 +196,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
178
196
  values.push("" + 1);
179
197
  }
180
198
  if (cols.length === 0) {
181
- return null;
199
+ return undefined;
182
200
  }
183
201
  else {
184
202
  var query = "insert into " + table + "(" + cols.join(',') + ")values(" + values.join(',') + ")";
@@ -186,8 +204,8 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
186
204
  }
187
205
  }
188
206
  exports.buildToInsert = buildToInsert;
189
- function insertBatch(exec, objs, table, attrs, buildParam, i) {
190
- var stm = buildToInsertBatch(objs, table, attrs, buildParam, i);
207
+ function insertBatch(exec, objs, table, attrs, buildParam, ver, i) {
208
+ var stm = buildToInsertBatch(objs, table, attrs, buildParam, ver, i);
191
209
  if (!stm) {
192
210
  return Promise.resolve(0);
193
211
  }
@@ -196,78 +214,169 @@ function insertBatch(exec, objs, table, attrs, buildParam, i) {
196
214
  }
197
215
  }
198
216
  exports.insertBatch = insertBatch;
199
- function buildToInsertBatch(objs, table, attrs, buildParam, i) {
217
+ function buildOracleParam(i) {
218
+ return ':' + i;
219
+ }
220
+ function buildToInsertBatch(objs, table, attrs, buildParam, ver, i) {
200
221
  if (!i) {
201
222
  i = 1;
202
223
  }
203
224
  var ks = Object.keys(attrs);
204
- var cols = [];
205
- var rows = [];
206
225
  var args = [];
207
- for (var _i = 0, ks_5 = ks; _i < ks_5.length; _i++) {
208
- var k = ks_5[_i];
209
- var attr = attrs[k];
210
- if (attr && !attr.ignored && !attr.noinsert) {
211
- var field = (attr.field ? attr.field : k);
212
- cols.push(field);
213
- }
214
- }
215
- for (var _a = 0, objs_1 = objs; _a < objs_1.length; _a++) {
216
- var obj = objs_1[_a];
217
- var values = [];
218
- for (var _b = 0, ks_6 = ks; _b < ks_6.length; _b++) {
219
- var k = ks_6[_b];
226
+ if (buildParam && typeof buildParam === 'function') {
227
+ var cols = [];
228
+ var rows = [];
229
+ for (var _i = 0, ks_5 = ks; _i < ks_5.length; _i++) {
230
+ var k = ks_5[_i];
220
231
  var attr = attrs[k];
221
232
  if (attr && !attr.ignored && !attr.noinsert) {
222
- var v = obj[k];
223
- if (v === undefined || v === null) {
224
- v = attr.default;
225
- }
226
- if (attr.version) {
227
- values.push('1');
228
- }
229
- else if (v === undefined || v == null) {
230
- values.push('null');
231
- }
232
- else if (v === '') {
233
- values.push("''");
234
- }
235
- else if (typeof v === 'number') {
236
- values.push(toString(v));
237
- }
238
- else if (typeof v === 'boolean') {
239
- if (attr.true === undefined) {
240
- if (v === true) {
241
- values.push("true");
233
+ var field = (attr.field ? attr.field : k);
234
+ cols.push(field);
235
+ }
236
+ }
237
+ for (var _a = 0, objs_1 = objs; _a < objs_1.length; _a++) {
238
+ var obj = objs_1[_a];
239
+ var values = [];
240
+ for (var _b = 0, ks_6 = ks; _b < ks_6.length; _b++) {
241
+ var k = ks_6[_b];
242
+ var attr = attrs[k];
243
+ if (attr && !attr.ignored && !attr.noinsert) {
244
+ var v = obj[k];
245
+ if (v === undefined || v === null) {
246
+ v = attr.default;
247
+ }
248
+ if (attr.version) {
249
+ values.push('1');
250
+ }
251
+ else if (v === undefined || v == null) {
252
+ values.push('null');
253
+ }
254
+ else if (v === '') {
255
+ values.push("''");
256
+ }
257
+ else if (typeof v === 'number') {
258
+ values.push(toString(v));
259
+ }
260
+ else if (typeof v === 'boolean') {
261
+ if (attr.true === undefined) {
262
+ if (v === true) {
263
+ values.push("true");
264
+ }
265
+ else {
266
+ values.push("false");
267
+ }
242
268
  }
243
269
  else {
244
- values.push("false");
270
+ var p = buildParam(i++);
271
+ values.push(p);
272
+ if (v === true) {
273
+ var v2 = (attr.true ? attr.true : '1');
274
+ args.push(v2);
275
+ }
276
+ else {
277
+ var v2 = (attr.false ? attr.false : '0');
278
+ args.push(v2);
279
+ }
245
280
  }
246
281
  }
247
282
  else {
248
283
  var p = buildParam(i++);
249
284
  values.push(p);
250
- if (v === true) {
251
- var v2 = (attr.true ? attr.true : '1');
252
- args.push(v2);
285
+ args.push(v);
286
+ }
287
+ }
288
+ }
289
+ rows.push("(" + values.join(',') + ")");
290
+ }
291
+ var query = "insert into " + table + "(" + cols.join(',') + ")values " + rows.join(',');
292
+ return { query: query, params: args };
293
+ }
294
+ else {
295
+ var notSkipInvalid = false;
296
+ if (buildParam === true) {
297
+ notSkipInvalid = true;
298
+ }
299
+ var rows = [];
300
+ for (var _c = 0, objs_2 = objs; _c < objs_2.length; _c++) {
301
+ var obj = objs_2[_c];
302
+ var cols = [];
303
+ var values = [];
304
+ var isVersion = false;
305
+ for (var _d = 0, ks_7 = ks; _d < ks_7.length; _d++) {
306
+ var k = ks_7[_d];
307
+ var v = obj[k];
308
+ var attr = attrs[k];
309
+ if (attr && !attr.ignored && !attr.noinsert) {
310
+ if (v === undefined || v == null) {
311
+ v = attr.default;
312
+ }
313
+ if (v !== undefined && v != null) {
314
+ var field = (attr.field ? attr.field : k);
315
+ cols.push(field);
316
+ if (k === ver) {
317
+ isVersion = true;
318
+ values.push("" + 1);
253
319
  }
254
320
  else {
255
- var v2 = (attr.false ? attr.false : '0');
256
- args.push(v2);
321
+ if (v === '') {
322
+ values.push("''");
323
+ }
324
+ else if (typeof v === 'number') {
325
+ values.push(toString(v));
326
+ }
327
+ else if (typeof v === 'boolean') {
328
+ if (attr.true === undefined) {
329
+ if (v === true) {
330
+ values.push("true");
331
+ }
332
+ else {
333
+ values.push("false");
334
+ }
335
+ }
336
+ else {
337
+ var p = buildOracleParam(i++);
338
+ values.push(p);
339
+ if (v === true) {
340
+ var v2 = (attr.true ? attr.true : '1');
341
+ args.push(v2);
342
+ }
343
+ else {
344
+ var v2 = (attr.false ? attr.false : '0');
345
+ args.push(v2);
346
+ }
347
+ }
348
+ }
349
+ else {
350
+ var p = buildOracleParam(i++);
351
+ values.push(p);
352
+ args.push(v);
353
+ }
257
354
  }
258
355
  }
259
356
  }
260
- else {
261
- var p = buildParam(i++);
262
- values.push(p);
263
- args.push(v);
357
+ }
358
+ if (!isVersion && ver && ver.length > 0) {
359
+ var attr = attrs[ver];
360
+ var field = (attr.field ? attr.field : ver);
361
+ cols.push(field);
362
+ values.push("" + 1);
363
+ }
364
+ if (cols.length === 0) {
365
+ if (notSkipInvalid) {
366
+ return undefined;
264
367
  }
265
368
  }
369
+ else {
370
+ var s = "into " + table + "(" + cols.join(',') + ")values(" + values.join(',') + ")";
371
+ rows.push(s);
372
+ }
373
+ }
374
+ if (rows.length === 0) {
375
+ return undefined;
266
376
  }
267
- rows.push("(" + values.join(',') + ")");
377
+ var query = "insert all " + rows.join(' ') + " select * from dual";
378
+ return { query: query, params: args };
268
379
  }
269
- var query = "insert into " + table + "(" + cols.join(',') + ")values " + rows.join(',');
270
- return { query: query, params: args };
271
380
  }
272
381
  exports.buildToInsertBatch = buildToInsertBatch;
273
382
  function update(exec, obj, table, attrs, buildParam, ver, i) {
@@ -284,14 +393,15 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
284
393
  if (!i) {
285
394
  i = 1;
286
395
  }
396
+ var o = obj;
287
397
  var ks = Object.keys(attrs);
288
398
  var pks = [];
289
399
  var colSet = [];
290
400
  var colQuery = [];
291
401
  var args = [];
292
- for (var _i = 0, ks_7 = ks; _i < ks_7.length; _i++) {
293
- var k = ks_7[_i];
294
- var v = obj[k];
402
+ for (var _i = 0, ks_8 = ks; _i < ks_8.length; _i++) {
403
+ var k = ks_8[_i];
404
+ var v = o[k];
295
405
  if (v !== undefined) {
296
406
  var attr = attrs[k];
297
407
  attr.name = k;
@@ -343,12 +453,13 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
343
453
  }
344
454
  for (var _a = 0, pks_1 = pks; _a < pks_1.length; _a++) {
345
455
  var pk = pks_1[_a];
346
- var v = obj[pk.name];
456
+ var na = (pk.name ? pk.name : '');
457
+ var v = o[na];
347
458
  if (!v) {
348
- return null;
459
+ return undefined;
349
460
  }
350
461
  else {
351
- var attr = attrs[pk.name];
462
+ var attr = attrs[na];
352
463
  var field = (attr.field ? attr.field : pk.name);
353
464
  var x = void 0;
354
465
  if (v == null) {
@@ -380,7 +491,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
380
491
  }
381
492
  }
382
493
  if (ver && ver.length > 0) {
383
- var v = obj[ver];
494
+ var v = o[ver];
384
495
  if (typeof v === 'number' && !isNaN(v)) {
385
496
  var attr = attrs[ver];
386
497
  if (attr) {
@@ -391,7 +502,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
391
502
  }
392
503
  }
393
504
  if (colSet.length === 0 || colQuery.length === 0) {
394
- return null;
505
+ return undefined;
395
506
  }
396
507
  else {
397
508
  var query = "update " + table + " set " + colSet.join(',') + " where " + colQuery.join(' and ');
@@ -413,20 +524,22 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
413
524
  var sts = [];
414
525
  var meta = metadata(attrs);
415
526
  if (!meta.keys || meta.keys.length === 0) {
416
- return null;
527
+ return undefined;
417
528
  }
418
- for (var _i = 0, objs_2 = objs; _i < objs_2.length; _i++) {
419
- var obj = objs_2[_i];
529
+ for (var _i = 0, objs_3 = objs; _i < objs_3.length; _i++) {
530
+ var obj = objs_3[_i];
531
+ var o = obj;
420
532
  var i = 1;
421
- var ks = Object.keys(obj);
533
+ var ks = Object.keys(o);
422
534
  var colSet = [];
423
535
  var colQuery = [];
424
536
  var args = [];
425
- for (var _a = 0, ks_8 = ks; _a < ks_8.length; _a++) {
426
- var k = ks_8[_a];
427
- var v = obj[k];
537
+ for (var _a = 0, ks_9 = ks; _a < ks_9.length; _a++) {
538
+ var k = ks_9[_a];
539
+ var v = o[k];
428
540
  if (v !== undefined) {
429
541
  var attr = attrs[k];
542
+ attr.name = k;
430
543
  if (attr && !attr.ignored && !attr.key && !attr.version && !attr.noupdate) {
431
544
  var field = (attr.field ? attr.field : k);
432
545
  var x = void 0;
@@ -471,12 +584,13 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
471
584
  var valid = true;
472
585
  for (var _b = 0, _c = meta.keys; _b < _c.length; _b++) {
473
586
  var pk = _c[_b];
474
- var v = obj[pk.name];
587
+ var na = (pk.name ? pk.name : '');
588
+ var v = o[na];
475
589
  if (!v) {
476
590
  valid = false;
477
591
  }
478
592
  else {
479
- var attr = attrs[pk.name];
593
+ var attr = attrs[na];
480
594
  var field = (attr.field ? attr.field : pk.name);
481
595
  var x = void 0;
482
596
  if (v == null) {
@@ -509,13 +623,13 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
509
623
  }
510
624
  if (!valid || colSet.length === 0 || colQuery.length === 0) {
511
625
  if (notSkipInvalid) {
512
- return null;
626
+ return undefined;
513
627
  }
514
628
  }
515
629
  else {
516
630
  var ver = meta.version;
517
631
  if (ver && ver.length > 0) {
518
- var v = obj[ver];
632
+ var v = o[ver];
519
633
  if (typeof v === 'number' && !isNaN(v)) {
520
634
  var attr = attrs[ver];
521
635
  if (attr) {
@@ -535,8 +649,8 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
535
649
  exports.buildToUpdateBatch = buildToUpdateBatch;
536
650
  function version(attrs) {
537
651
  var ks = Object.keys(attrs);
538
- for (var _i = 0, ks_9 = ks; _i < ks_9.length; _i++) {
539
- var k = ks_9[_i];
652
+ for (var _i = 0, ks_10 = ks; _i < ks_10.length; _i++) {
653
+ var k = ks_10[_i];
540
654
  var attr = attrs[k];
541
655
  if (attr.version) {
542
656
  attr.name = k;
@@ -548,22 +662,22 @@ function version(attrs) {
548
662
  exports.version = version;
549
663
  function key(attrs) {
550
664
  var ks = Object.keys(attrs);
551
- for (var _i = 0, ks_10 = ks; _i < ks_10.length; _i++) {
552
- var k = ks_10[_i];
665
+ for (var _i = 0, ks_11 = ks; _i < ks_11.length; _i++) {
666
+ var k = ks_11[_i];
553
667
  var attr = attrs[k];
554
668
  attr.name = k;
555
669
  if (attr.key) {
556
670
  return attr;
557
671
  }
558
672
  }
559
- return null;
673
+ return undefined;
560
674
  }
561
675
  exports.key = key;
562
676
  function keys(attrs) {
563
677
  var ks = Object.keys(attrs);
564
678
  var ats = [];
565
- for (var _i = 0, ks_11 = ks; _i < ks_11.length; _i++) {
566
- var k = ks_11[_i];
679
+ for (var _i = 0, ks_12 = ks; _i < ks_12.length; _i++) {
680
+ var k = ks_12[_i];
567
681
  var attr = attrs[k];
568
682
  attr.name = k;
569
683
  if (attr.key) {
@@ -576,8 +690,8 @@ exports.keys = keys;
576
690
  function buildMap(attrs) {
577
691
  var mp = {};
578
692
  var ks = Object.keys(attrs);
579
- for (var _i = 0, ks_12 = ks; _i < ks_12.length; _i++) {
580
- var k = ks_12[_i];
693
+ for (var _i = 0, ks_13 = ks; _i < ks_13.length; _i++) {
694
+ var k = ks_13[_i];
581
695
  var attr = attrs[k];
582
696
  attr.name = k;
583
697
  var field = (attr.field ? attr.field : k);
@@ -595,10 +709,10 @@ function metadata(attrs) {
595
709
  var ats = [];
596
710
  var bools = [];
597
711
  var fields = [];
598
- var ver;
599
712
  var isMap = false;
600
- for (var _i = 0, ks_13 = ks; _i < ks_13.length; _i++) {
601
- var k = ks_13[_i];
713
+ var m = { keys: ats, fields: fields };
714
+ for (var _i = 0, ks_14 = ks; _i < ks_14.length; _i++) {
715
+ var k = ks_14[_i];
602
716
  var attr = attrs[k];
603
717
  attr.name = k;
604
718
  if (attr.key) {
@@ -611,7 +725,7 @@ function metadata(attrs) {
611
725
  bools.push(attr);
612
726
  }
613
727
  if (attr.version) {
614
- ver = k;
728
+ m.version = k;
615
729
  }
616
730
  var field = (attr.field ? attr.field : k);
617
731
  var s = field.toLowerCase();
@@ -620,7 +734,6 @@ function metadata(attrs) {
620
734
  isMap = true;
621
735
  }
622
736
  }
623
- var m = { keys: ats, fields: fields, version: ver };
624
737
  if (isMap) {
625
738
  m.map = mp;
626
739
  }