query-core 0.1.6 → 0.1.10

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,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- function params(length, param, from) {
3
+ function params(length, p, from) {
4
4
  if (from === undefined || from == null) {
5
5
  from = 0;
6
6
  }
7
7
  var ps = [];
8
8
  for (var i = 1; i <= length; i++) {
9
- ps.push(param(i + from));
9
+ ps.push(p(i + from));
10
10
  }
11
11
  return ps;
12
12
  }
@@ -31,15 +31,17 @@ function select(obj, table, ks, buildParam, i) {
31
31
  var args = [];
32
32
  for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
33
33
  var k = ks_1[_i];
34
- var field = (k.field ? k.field : k.name);
35
- cols.push(field + " = " + buildParam(i++));
36
- 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
+ }
37
39
  }
38
40
  var query = "select * from " + table + " where " + cols.join(' and ');
39
41
  return { query: query, params: args };
40
42
  }
41
43
  else {
42
- return null;
44
+ return undefined;
43
45
  }
44
46
  }
45
47
  exports.select = select;
@@ -66,15 +68,17 @@ function exist(obj, table, ks, buildParam, col, i) {
66
68
  var args = [];
67
69
  for (var _i = 0, ks_2 = ks; _i < ks_2.length; _i++) {
68
70
  var k = ks_2[_i];
69
- var field = (k.field ? k.field : k.name);
70
- cols.push(field + " = " + buildParam(i++));
71
- 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
+ }
72
76
  }
73
77
  var query = "select * from " + table + " where " + cols.join(' and ');
74
78
  return { query: query, params: args };
75
79
  }
76
80
  else {
77
- return null;
81
+ return undefined;
78
82
  }
79
83
  }
80
84
  exports.exist = exist;
@@ -98,15 +102,17 @@ function buildToDelete(obj, table, ks, buildParam, i) {
98
102
  var args = [];
99
103
  for (var _i = 0, ks_3 = ks; _i < ks_3.length; _i++) {
100
104
  var k = ks_3[_i];
101
- var field = (k.field ? k.field : k.name);
102
- cols.push(field + " = " + buildParam(i++));
103
- 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
+ }
104
110
  }
105
111
  var query = "delete from " + table + " where " + cols.join(' and ');
106
112
  return { query: query, params: args };
107
113
  }
108
114
  else {
109
- return null;
115
+ return undefined;
110
116
  }
111
117
  }
112
118
  exports.buildToDelete = buildToDelete;
@@ -124,6 +130,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
124
130
  if (!i) {
125
131
  i = 1;
126
132
  }
133
+ var o = obj;
127
134
  var ks = Object.keys(attrs);
128
135
  var cols = [];
129
136
  var values = [];
@@ -131,7 +138,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
131
138
  var isVersion = false;
132
139
  for (var _i = 0, ks_4 = ks; _i < ks_4.length; _i++) {
133
140
  var k = ks_4[_i];
134
- var v = obj[k];
141
+ var v = o[k];
135
142
  var attr = attrs[k];
136
143
  if (attr && !attr.ignored && !attr.noinsert) {
137
144
  if (v === undefined || v == null) {
@@ -189,7 +196,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
189
196
  values.push("" + 1);
190
197
  }
191
198
  if (cols.length === 0) {
192
- return null;
199
+ return undefined;
193
200
  }
194
201
  else {
195
202
  var query = "insert into " + table + "(" + cols.join(',') + ")values(" + values.join(',') + ")";
@@ -197,8 +204,8 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
197
204
  }
198
205
  }
199
206
  exports.buildToInsert = buildToInsert;
200
- function insertBatch(exec, objs, table, attrs, buildParam, i) {
201
- 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);
202
209
  if (!stm) {
203
210
  return Promise.resolve(0);
204
211
  }
@@ -207,78 +214,169 @@ function insertBatch(exec, objs, table, attrs, buildParam, i) {
207
214
  }
208
215
  }
209
216
  exports.insertBatch = insertBatch;
210
- function buildToInsertBatch(objs, table, attrs, buildParam, i) {
217
+ function buildOracleParam(i) {
218
+ return ':' + i;
219
+ }
220
+ function buildToInsertBatch(objs, table, attrs, buildParam, ver, i) {
211
221
  if (!i) {
212
222
  i = 1;
213
223
  }
214
224
  var ks = Object.keys(attrs);
215
- var cols = [];
216
- var rows = [];
217
225
  var args = [];
218
- for (var _i = 0, ks_5 = ks; _i < ks_5.length; _i++) {
219
- var k = ks_5[_i];
220
- var attr = attrs[k];
221
- if (attr && !attr.ignored && !attr.noinsert) {
222
- var field = (attr.field ? attr.field : k);
223
- cols.push(field);
224
- }
225
- }
226
- for (var _a = 0, objs_1 = objs; _a < objs_1.length; _a++) {
227
- var obj = objs_1[_a];
228
- var values = [];
229
- for (var _b = 0, ks_6 = ks; _b < ks_6.length; _b++) {
230
- 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];
231
231
  var attr = attrs[k];
232
232
  if (attr && !attr.ignored && !attr.noinsert) {
233
- var v = obj[k];
234
- if (v === undefined || v === null) {
235
- v = attr.default;
236
- }
237
- if (attr.version) {
238
- values.push('1');
239
- }
240
- else if (v === undefined || v == null) {
241
- values.push('null');
242
- }
243
- else if (v === '') {
244
- values.push("''");
245
- }
246
- else if (typeof v === 'number') {
247
- values.push(toString(v));
248
- }
249
- else if (typeof v === 'boolean') {
250
- if (attr.true === undefined) {
251
- if (v === true) {
252
- 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
+ }
253
268
  }
254
269
  else {
255
- 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
+ }
256
280
  }
257
281
  }
258
282
  else {
259
283
  var p = buildParam(i++);
260
284
  values.push(p);
261
- if (v === true) {
262
- var v2 = (attr.true ? attr.true : '1');
263
- 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);
264
319
  }
265
320
  else {
266
- var v2 = (attr.false ? attr.false : '0');
267
- 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
+ }
268
354
  }
269
355
  }
270
356
  }
271
- else {
272
- var p = buildParam(i++);
273
- values.push(p);
274
- 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;
275
367
  }
276
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;
277
376
  }
278
- rows.push("(" + values.join(',') + ")");
377
+ var query = "insert all " + rows.join(' ') + " select * from dual";
378
+ return { query: query, params: args };
279
379
  }
280
- var query = "insert into " + table + "(" + cols.join(',') + ")values " + rows.join(',');
281
- return { query: query, params: args };
282
380
  }
283
381
  exports.buildToInsertBatch = buildToInsertBatch;
284
382
  function update(exec, obj, table, attrs, buildParam, ver, i) {
@@ -295,14 +393,15 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
295
393
  if (!i) {
296
394
  i = 1;
297
395
  }
396
+ var o = obj;
298
397
  var ks = Object.keys(attrs);
299
398
  var pks = [];
300
399
  var colSet = [];
301
400
  var colQuery = [];
302
401
  var args = [];
303
- for (var _i = 0, ks_7 = ks; _i < ks_7.length; _i++) {
304
- var k = ks_7[_i];
305
- 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];
306
405
  if (v !== undefined) {
307
406
  var attr = attrs[k];
308
407
  attr.name = k;
@@ -354,12 +453,13 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
354
453
  }
355
454
  for (var _a = 0, pks_1 = pks; _a < pks_1.length; _a++) {
356
455
  var pk = pks_1[_a];
357
- var v = obj[pk.name];
456
+ var na = (pk.name ? pk.name : '');
457
+ var v = o[na];
358
458
  if (!v) {
359
- return null;
459
+ return undefined;
360
460
  }
361
461
  else {
362
- var attr = attrs[pk.name];
462
+ var attr = attrs[na];
363
463
  var field = (attr.field ? attr.field : pk.name);
364
464
  var x = void 0;
365
465
  if (v == null) {
@@ -391,7 +491,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
391
491
  }
392
492
  }
393
493
  if (ver && ver.length > 0) {
394
- var v = obj[ver];
494
+ var v = o[ver];
395
495
  if (typeof v === 'number' && !isNaN(v)) {
396
496
  var attr = attrs[ver];
397
497
  if (attr) {
@@ -402,7 +502,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
402
502
  }
403
503
  }
404
504
  if (colSet.length === 0 || colQuery.length === 0) {
405
- return null;
505
+ return undefined;
406
506
  }
407
507
  else {
408
508
  var query = "update " + table + " set " + colSet.join(',') + " where " + colQuery.join(' and ');
@@ -424,20 +524,22 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
424
524
  var sts = [];
425
525
  var meta = metadata(attrs);
426
526
  if (!meta.keys || meta.keys.length === 0) {
427
- return null;
527
+ return undefined;
428
528
  }
429
- for (var _i = 0, objs_2 = objs; _i < objs_2.length; _i++) {
430
- 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;
431
532
  var i = 1;
432
- var ks = Object.keys(obj);
533
+ var ks = Object.keys(o);
433
534
  var colSet = [];
434
535
  var colQuery = [];
435
536
  var args = [];
436
- for (var _a = 0, ks_8 = ks; _a < ks_8.length; _a++) {
437
- var k = ks_8[_a];
438
- 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];
439
540
  if (v !== undefined) {
440
541
  var attr = attrs[k];
542
+ attr.name = k;
441
543
  if (attr && !attr.ignored && !attr.key && !attr.version && !attr.noupdate) {
442
544
  var field = (attr.field ? attr.field : k);
443
545
  var x = void 0;
@@ -482,12 +584,13 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
482
584
  var valid = true;
483
585
  for (var _b = 0, _c = meta.keys; _b < _c.length; _b++) {
484
586
  var pk = _c[_b];
485
- var v = obj[pk.name];
587
+ var na = (pk.name ? pk.name : '');
588
+ var v = o[na];
486
589
  if (!v) {
487
590
  valid = false;
488
591
  }
489
592
  else {
490
- var attr = attrs[pk.name];
593
+ var attr = attrs[na];
491
594
  var field = (attr.field ? attr.field : pk.name);
492
595
  var x = void 0;
493
596
  if (v == null) {
@@ -520,13 +623,13 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
520
623
  }
521
624
  if (!valid || colSet.length === 0 || colQuery.length === 0) {
522
625
  if (notSkipInvalid) {
523
- return null;
626
+ return undefined;
524
627
  }
525
628
  }
526
629
  else {
527
630
  var ver = meta.version;
528
631
  if (ver && ver.length > 0) {
529
- var v = obj[ver];
632
+ var v = o[ver];
530
633
  if (typeof v === 'number' && !isNaN(v)) {
531
634
  var attr = attrs[ver];
532
635
  if (attr) {
@@ -546,8 +649,8 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
546
649
  exports.buildToUpdateBatch = buildToUpdateBatch;
547
650
  function version(attrs) {
548
651
  var ks = Object.keys(attrs);
549
- for (var _i = 0, ks_9 = ks; _i < ks_9.length; _i++) {
550
- var k = ks_9[_i];
652
+ for (var _i = 0, ks_10 = ks; _i < ks_10.length; _i++) {
653
+ var k = ks_10[_i];
551
654
  var attr = attrs[k];
552
655
  if (attr.version) {
553
656
  attr.name = k;
@@ -559,22 +662,22 @@ function version(attrs) {
559
662
  exports.version = version;
560
663
  function key(attrs) {
561
664
  var ks = Object.keys(attrs);
562
- for (var _i = 0, ks_10 = ks; _i < ks_10.length; _i++) {
563
- var k = ks_10[_i];
665
+ for (var _i = 0, ks_11 = ks; _i < ks_11.length; _i++) {
666
+ var k = ks_11[_i];
564
667
  var attr = attrs[k];
565
668
  attr.name = k;
566
669
  if (attr.key) {
567
670
  return attr;
568
671
  }
569
672
  }
570
- return null;
673
+ return undefined;
571
674
  }
572
675
  exports.key = key;
573
676
  function keys(attrs) {
574
677
  var ks = Object.keys(attrs);
575
678
  var ats = [];
576
- for (var _i = 0, ks_11 = ks; _i < ks_11.length; _i++) {
577
- var k = ks_11[_i];
679
+ for (var _i = 0, ks_12 = ks; _i < ks_12.length; _i++) {
680
+ var k = ks_12[_i];
578
681
  var attr = attrs[k];
579
682
  attr.name = k;
580
683
  if (attr.key) {
@@ -587,8 +690,8 @@ exports.keys = keys;
587
690
  function buildMap(attrs) {
588
691
  var mp = {};
589
692
  var ks = Object.keys(attrs);
590
- for (var _i = 0, ks_12 = ks; _i < ks_12.length; _i++) {
591
- var k = ks_12[_i];
693
+ for (var _i = 0, ks_13 = ks; _i < ks_13.length; _i++) {
694
+ var k = ks_13[_i];
592
695
  var attr = attrs[k];
593
696
  attr.name = k;
594
697
  var field = (attr.field ? attr.field : k);
@@ -606,10 +709,10 @@ function metadata(attrs) {
606
709
  var ats = [];
607
710
  var bools = [];
608
711
  var fields = [];
609
- var ver;
610
712
  var isMap = false;
611
- for (var _i = 0, ks_13 = ks; _i < ks_13.length; _i++) {
612
- 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];
613
716
  var attr = attrs[k];
614
717
  attr.name = k;
615
718
  if (attr.key) {
@@ -622,7 +725,7 @@ function metadata(attrs) {
622
725
  bools.push(attr);
623
726
  }
624
727
  if (attr.version) {
625
- ver = k;
728
+ m.version = k;
626
729
  }
627
730
  var field = (attr.field ? attr.field : k);
628
731
  var s = field.toLowerCase();
@@ -631,7 +734,6 @@ function metadata(attrs) {
631
734
  isMap = true;
632
735
  }
633
736
  }
634
- var m = { keys: ats, fields: fields, version: ver };
635
737
  if (isMap) {
636
738
  m.map = mp;
637
739
  }