query-core 0.1.29 → 0.1.31
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 +29 -8
- package/lib/index.js +55 -60
- package/lib/search.js +107 -107
- package/lib/services.js +392 -238
- package/package.json +1 -1
- package/src/build.ts +25 -8
- package/src/index.ts +2 -4
- package/src/services.ts +4 -4
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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
|
-
|
|
447
|
-
|
|
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
58
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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;
|