query-core 0.1.29 → 0.1.30

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/lib/build.js CHANGED
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ var resource = (function () {
4
+ function resource() {
5
+ }
6
+ return resource;
7
+ }());
8
+ exports.resource = resource;
3
9
  function params(length, p, from) {
4
10
  if (from === undefined || from == null) {
5
11
  from = 0;
@@ -181,9 +187,14 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
181
187
  }
182
188
  }
183
189
  else {
184
- var p = buildParam(i++);
185
- values.push(p);
186
- args.push(v);
190
+ if (resource.ignoreDatetime && typeof v === 'string' && attr.type === 'datetime') {
191
+ values.push("'" + v + "'");
192
+ }
193
+ else {
194
+ var p = buildParam(i++);
195
+ values.push(p);
196
+ args.push(v);
197
+ }
187
198
  }
188
199
  }
189
200
  }
@@ -280,9 +291,14 @@ function buildToInsertBatch(objs, table, attrs, buildParam, ver, i) {
280
291
  }
281
292
  }
282
293
  else {
283
- var p = buildParam(i++);
284
- values.push(p);
285
- args.push(v);
294
+ if (resource.ignoreDatetime && typeof v === 'string' && attr.type === 'datetime') {
295
+ values.push("'" + v + "'");
296
+ }
297
+ else {
298
+ var p = buildParam(i++);
299
+ values.push(p);
300
+ args.push(v);
301
+ }
286
302
  }
287
303
  }
288
304
  }
@@ -443,8 +459,13 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
443
459
  }
444
460
  }
445
461
  else {
446
- x = buildParam(i++);
447
- args.push(v);
462
+ if (resource.ignoreDatetime && typeof v === 'string' && attr.type === 'datetime') {
463
+ x = "'" + v + "'";
464
+ }
465
+ else {
466
+ x = buildParam(i++);
467
+ args.push(v);
468
+ }
448
469
  }
449
470
  colSet.push(field + "=" + x);
450
471
  }
package/lib/index.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
3
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
4
  }
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var health_1 = require("./health");
7
7
  exports.SqlChecker = health_1.Checker;
8
+ var build_1 = require("./build");
8
9
  var services_1 = require("./services");
9
10
  exports.SqlViewRepository = services_1.SqlLoader;
10
11
  exports.SqlLoadService = services_1.SqlLoader;
@@ -33,77 +34,71 @@ __export(require("./query"));
33
34
  __export(require("./search"));
34
35
  __export(require("./SearchBuilder"));
35
36
  __export(require("./client"));
36
- var resource = (function () {
37
- function resource() {
38
- }
39
- return resource;
40
- }());
41
- exports.resource = resource;
42
37
  var Loader = (function () {
43
- function Loader(query, sql, m, bools) {
44
- this.query = query;
45
- this.sql = sql;
46
- this.bools = bools;
47
- this.map = m;
48
- this.load = this.load.bind(this);
49
- }
50
- Loader.prototype.load = function () {
51
- return this.query(this.sql, [], this.map, this.bools);
52
- };
53
- return Loader;
38
+ function Loader(query, sql, m, bools) {
39
+ this.query = query;
40
+ this.sql = sql;
41
+ this.bools = bools;
42
+ this.map = m;
43
+ this.load = this.load.bind(this);
44
+ }
45
+ Loader.prototype.load = function () {
46
+ return this.query(this.sql, [], this.map, this.bools);
47
+ };
48
+ return Loader;
54
49
  }());
55
50
  exports.Loader = Loader;
56
51
  function toArray(arr) {
57
- if (!arr || arr.length === 0) {
58
- return [];
59
- }
60
- var p = [];
61
- var l = arr.length;
62
- for (var i = 0; i < l; i++) {
63
- if (arr[i] === undefined || arr[i] == null) {
64
- p.push(null);
52
+ if (!arr || arr.length === 0) {
53
+ return [];
65
54
  }
66
- else {
67
- if (typeof arr[i] === 'object') {
68
- if (arr[i] instanceof Date) {
69
- p.push(arr[i]);
55
+ var p = [];
56
+ var l = arr.length;
57
+ for (var i = 0; i < l; i++) {
58
+ if (arr[i] === undefined || arr[i] == null) {
59
+ p.push(null);
70
60
  }
71
61
  else {
72
- if (resource.string) {
73
- var s = JSON.stringify(arr[i]);
74
- p.push(s);
75
- }
76
- else {
77
- p.push(arr[i]);
78
- }
62
+ if (typeof arr[i] === 'object') {
63
+ if (arr[i] instanceof Date) {
64
+ p.push(arr[i]);
65
+ }
66
+ else {
67
+ if (build_1.resource.string) {
68
+ var s = JSON.stringify(arr[i]);
69
+ p.push(s);
70
+ }
71
+ else {
72
+ p.push(arr[i]);
73
+ }
74
+ }
75
+ }
76
+ else {
77
+ p.push(arr[i]);
78
+ }
79
79
  }
80
- }
81
- else {
82
- p.push(arr[i]);
83
- }
84
80
  }
85
- }
86
- return p;
81
+ return p;
87
82
  }
88
83
  exports.toArray = toArray;
89
84
  function map(obj, m) {
90
- if (!m) {
91
- return obj;
92
- }
93
- var mkeys = Object.keys(m);
94
- if (mkeys.length === 0) {
95
- return obj;
96
- }
97
- var obj2 = {};
98
- var keys = Object.keys(obj);
99
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
100
- var key = keys_1[_i];
101
- var k0 = m[key];
102
- if (!k0) {
103
- k0 = key;
85
+ if (!m) {
86
+ return obj;
87
+ }
88
+ var mkeys = Object.keys(m);
89
+ if (mkeys.length === 0) {
90
+ return obj;
91
+ }
92
+ var obj2 = {};
93
+ var keys = Object.keys(obj);
94
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
95
+ var key = keys_1[_i];
96
+ var k0 = m[key];
97
+ if (!k0) {
98
+ k0 = key;
99
+ }
100
+ obj2[k0] = obj[key];
104
101
  }
105
- obj2[k0] = obj[key];
106
- }
107
- return obj2;
102
+ return obj2;
108
103
  }
109
104
  exports.map = map;
package/lib/search.js CHANGED
@@ -1,63 +1,63 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  function buildFromQuery(query, sql, params, limit, offset, mp, bools, provider, totalCol) {
4
- if (!limit || limit <= 0) {
5
- return query(sql, params, mp, bools).then(function (list) {
6
- var total = (list ? list.length : undefined);
7
- return { list: list, total: total };
8
- });
4
+ if (!limit || limit <= 0) {
5
+ return query(sql, params, mp, bools).then(function (list) {
6
+ var total = (list ? list.length : undefined);
7
+ return { list: list, total: total };
8
+ });
9
+ }
10
+ else {
11
+ if (provider === exports.oracle) {
12
+ if (!totalCol || totalCol.length === 0) {
13
+ totalCol = 'total';
14
+ }
15
+ var sql2 = buildPagingQueryForOracle(sql, limit, offset, totalCol);
16
+ return queryAndCount(query, sql2, params, totalCol, mp, bools);
9
17
  }
10
18
  else {
11
- if (provider === exports.oracle) {
12
- if (!totalCol || totalCol.length === 0) {
13
- totalCol = 'total';
14
- }
15
- var sql2 = buildPagingQueryForOracle(sql, limit, offset, totalCol);
16
- return queryAndCount(query, sql2, params, totalCol, mp, bools);
19
+ var sql2 = buildPagingQuery(sql, limit, offset);
20
+ var countQuery = buildCountQuery(sql);
21
+ var resultPromise = query(sql2, params, mp, bools);
22
+ var countPromise = query(countQuery, params).then(function (r) {
23
+ if (!r || r.length === 0) {
24
+ return 0;
25
+ }
26
+ else {
27
+ var r0 = r[0];
28
+ var keys = Object.keys(r0);
29
+ return r0[keys[0]];
30
+ }
31
+ });
32
+ return Promise.all([resultPromise, countPromise]).then(function (r) {
33
+ var list = r[0], total = r[1];
34
+ if (typeof total === 'string' && !isNaN(total)) {
35
+ var t = parseInt(total, 10);
36
+ return { list: list, total: t };
17
37
  }
18
38
  else {
19
- var sql2 = buildPagingQuery(sql, limit, offset);
20
- var countQuery = buildCountQuery(sql);
21
- var resultPromise = query(sql2, params, mp, bools);
22
- var countPromise = query(countQuery, params).then(function (r) {
23
- if (!r || r.length === 0) {
24
- return 0;
25
- }
26
- else {
27
- var r0 = r[0];
28
- var keys = Object.keys(r0);
29
- return r0[keys[0]];
30
- }
31
- });
32
- return Promise.all([resultPromise, countPromise]).then(function (r) {
33
- var list = r[0], total = r[1];
34
- if (typeof total === 'string' && !isNaN(total)) {
35
- var t = parseInt(total, 10);
36
- return { list: list, total: t };
37
- }
38
- else {
39
- return { list: list, total: total };
40
- }
41
- });
39
+ return { list: list, total: total };
42
40
  }
41
+ });
43
42
  }
43
+ }
44
44
  }
45
45
  exports.buildFromQuery = buildFromQuery;
46
46
  function queryAndCount(query, sql, params, total, mp, bools) {
47
- if (!total || total.length === 0) {
48
- total = 'total';
49
- }
50
- return query(sql, params, mp, bools).then(function (list) {
51
- if (!list || list.length === 0) {
52
- return { list: [], total: 0 };
53
- }
54
- var t = list[0][total];
55
- for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {
56
- var obj = list_1[_i];
57
- delete obj[total];
58
- }
59
- return { list: list, total: t };
60
- });
47
+ if (!total || total.length === 0) {
48
+ total = 'total';
49
+ }
50
+ return query(sql, params, mp, bools).then(function (list) {
51
+ if (!list || list.length === 0) {
52
+ return { list: [], total: 0 };
53
+ }
54
+ var t = list[0][total];
55
+ for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {
56
+ var obj = list_1[_i];
57
+ delete obj[total];
58
+ }
59
+ return { list: list, total: t };
60
+ });
61
61
  }
62
62
  exports.queryAndCount = queryAndCount;
63
63
  exports.oracle = 'oracle';
@@ -66,70 +66,70 @@ var S = 'SELECT';
66
66
  var d = ' distinct ';
67
67
  var D = ' DISTINCT ';
68
68
  function buildPagingQuery(sql, limit, offset, provider) {
69
- if (limit === undefined || limit == null) {
70
- limit = 0;
71
- }
72
- if (offset === undefined || offset == null) {
73
- offset = 0;
74
- }
75
- if (provider !== exports.oracle) {
76
- return sql + " limit " + limit + " offset " + offset;
77
- }
78
- else {
79
- return buildPagingQueryForOracle(sql, limit, offset);
80
- }
69
+ if (limit === undefined || limit == null) {
70
+ limit = 0;
71
+ }
72
+ if (offset === undefined || offset == null) {
73
+ offset = 0;
74
+ }
75
+ if (provider !== exports.oracle) {
76
+ return sql + " limit " + limit + " offset " + offset;
77
+ }
78
+ else {
79
+ return buildPagingQueryForOracle(sql, limit, offset);
80
+ }
81
81
  }
82
82
  exports.buildPagingQuery = buildPagingQuery;
83
83
  function buildPagingQueryForOracle(sql, limit, offset, total) {
84
- if (!total || total.length === 0) {
85
- total = 'total';
86
- }
87
- if (!offset) {
88
- offset = 0;
89
- }
90
- var l = d.length;
91
- var i = sql.indexOf(d);
92
- if (i < 0) {
93
- i = sql.indexOf(D);
94
- }
95
- if (i < 0) {
96
- l = S.length;
97
- i = sql.indexOf(s);
98
- }
99
- if (i < 0) {
100
- i = sql.indexOf(S);
101
- }
102
- if (i >= 0) {
103
- return sql.substr(0, l) + " count(*) over() as " + total + ", " + sql.substr(l) + " offset " + offset + " rows fetch next " + limit + " rows only";
104
- }
105
- else {
106
- return sql + " offset " + offset + " rows fetch next " + limit + " rows only";
107
- }
84
+ if (!total || total.length === 0) {
85
+ total = 'total';
86
+ }
87
+ if (!offset) {
88
+ offset = 0;
89
+ }
90
+ var l = d.length;
91
+ var i = sql.indexOf(d);
92
+ if (i < 0) {
93
+ i = sql.indexOf(D);
94
+ }
95
+ if (i < 0) {
96
+ l = S.length;
97
+ i = sql.indexOf(s);
98
+ }
99
+ if (i < 0) {
100
+ i = sql.indexOf(S);
101
+ }
102
+ if (i >= 0) {
103
+ return sql.substr(0, l) + " count(*) over() as " + total + ", " + sql.substr(l) + " offset " + offset + " rows fetch next " + limit + " rows only";
104
+ }
105
+ else {
106
+ return sql + " offset " + offset + " rows fetch next " + limit + " rows only";
107
+ }
108
108
  }
109
109
  exports.buildPagingQueryForOracle = buildPagingQueryForOracle;
110
110
  function buildCountQuery(sql) {
111
- var sql2 = sql.trim();
112
- var i = sql2.indexOf('select ');
113
- if (i < 0) {
114
- return sql;
115
- }
116
- var j = sql2.indexOf(' from ', i + 6);
117
- if (j < 0) {
118
- return sql;
119
- }
120
- var k = sql2.indexOf(' order by ', j);
121
- var h = sql2.indexOf(' distinct ');
122
- if (h > 0) {
123
- var sql3 = 'select count(*) from (' + sql2.substring(i) + ') as main';
124
- return sql3;
125
- }
126
- if (k > 0) {
127
- var sql3 = 'select count(*) ' + sql2.substring(j, k);
128
- return sql3;
129
- }
130
- else {
131
- var sql3 = 'select count(*) ' + sql2.substring(j);
132
- return sql3;
133
- }
111
+ var sql2 = sql.trim();
112
+ var i = sql2.indexOf('select ');
113
+ if (i < 0) {
114
+ return sql;
115
+ }
116
+ var j = sql2.indexOf(' from ', i + 6);
117
+ if (j < 0) {
118
+ return sql;
119
+ }
120
+ var k = sql2.indexOf(' order by ', j);
121
+ var h = sql2.indexOf(' distinct ');
122
+ if (h > 0) {
123
+ var sql3 = 'select count(*) from (' + sql2.substring(i) + ') as main';
124
+ return sql3;
125
+ }
126
+ if (k > 0) {
127
+ var sql3 = 'select count(*) ' + sql2.substring(j, k);
128
+ return sql3;
129
+ }
130
+ else {
131
+ var sql3 = 'select count(*) ' + sql2.substring(j);
132
+ return sql3;
133
+ }
134
134
  }
135
135
  exports.buildCountQuery = buildCountQuery;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "query-core",
3
- "version": "0.1.29",
3
+ "version": "0.1.30",
4
4
  "description": "query",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/build.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import {Attribute, Attributes, Statement, StringMap} from './metadata';
2
2
 
3
+ // tslint:disable-next-line:class-name
4
+ export class resource {
5
+ static string?: boolean;
6
+ static ignoreDatetime?: boolean;
7
+ }
3
8
  export function params(length: number, p: (i: number) => string, from?: number): string[] {
4
9
  if (from === undefined || from == null) {
5
10
  from = 0;
@@ -155,9 +160,13 @@ export function buildToInsert<T>(obj: T, table: string, attrs: Attributes, build
155
160
  }
156
161
  }
157
162
  } else {
158
- const p = buildParam(i++);
159
- values.push(p);
160
- args.push(v);
163
+ if (resource.ignoreDatetime && typeof v === 'string' && attr.type === 'datetime') {
164
+ values.push(`'${v}'`);
165
+ } else {
166
+ const p = buildParam(i++);
167
+ values.push(p);
168
+ args.push(v);
169
+ }
161
170
  }
162
171
  }
163
172
  }
@@ -240,9 +249,13 @@ export function buildToInsertBatch<T>(objs: T[], table: string, attrs: Attribute
240
249
  }
241
250
  }
242
251
  } else {
243
- const p = buildParam(i++);
244
- values.push(p);
245
- args.push(v);
252
+ if (resource.ignoreDatetime && typeof v === 'string' && attr.type === 'datetime') {
253
+ values.push(`'${v}'`);
254
+ } else {
255
+ const p = buildParam(i++);
256
+ values.push(p);
257
+ args.push(v);
258
+ }
246
259
  }
247
260
  }
248
261
  }
@@ -380,8 +393,12 @@ export function buildToUpdate<T>(obj: T, table: string, attrs: Attributes, build
380
393
  }
381
394
  }
382
395
  } else {
383
- x = buildParam(i++);
384
- args.push(v);
396
+ if (resource.ignoreDatetime && typeof v === 'string' && attr.type === 'datetime') {
397
+ x = `'${v}'`;
398
+ } else {
399
+ x = buildParam(i++);
400
+ args.push(v);
401
+ }
385
402
  }
386
403
  colSet.push(`${field}=${x}`);
387
404
  }
package/src/index.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import {Checker} from './health';
2
2
  export {Checker as SqlChecker};
3
3
 
4
+ import {resource} from './build';
4
5
  import {Attribute, StringMap} from './metadata';
5
6
  import {SqlLoader, SqlSearchLoader, SqlSearchWriter, SqlWriter} from './services';
6
7
  // export {SqlLoader as SqlLoadRepository};
@@ -50,10 +51,7 @@ export interface Config {
50
51
  min?: number | undefined;
51
52
  idleTimeoutMillis?: number | undefined;
52
53
  }
53
- // tslint:disable-next-line:class-name
54
- export class resource {
55
- static string?: boolean;
56
- }
54
+
57
55
  // tslint:disable-next-line:max-classes-per-file
58
56
  export class Loader<T> {
59
57
  map?: StringMap;