query-core 0.1.10 → 0.1.14
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 +20 -20
- package/lib/index.js +0 -6
- package/lib/query.js +5 -5
- package/lib/services.js +7 -16
- package/package.json +2 -1
- package/src/build.ts +20 -20
- package/src/index.ts +1 -7
- package/src/metadata.ts +19 -6
- package/src/query.ts +5 -5
- package/src/services.ts +20 -33
package/lib/build.js
CHANGED
|
@@ -16,7 +16,7 @@ function select(obj, table, ks, buildParam, i) {
|
|
|
16
16
|
i = 1;
|
|
17
17
|
}
|
|
18
18
|
if (ks.length === 1) {
|
|
19
|
-
var field = (ks[0].
|
|
19
|
+
var field = (ks[0].column ? ks[0].column : ks[0].name);
|
|
20
20
|
if (typeof obj === 'number') {
|
|
21
21
|
var query = "select * from " + table + " where " + field + " = " + obj;
|
|
22
22
|
return { query: query, params: [] };
|
|
@@ -32,7 +32,7 @@ function select(obj, table, ks, buildParam, i) {
|
|
|
32
32
|
for (var _i = 0, ks_1 = ks; _i < ks_1.length; _i++) {
|
|
33
33
|
var k = ks_1[_i];
|
|
34
34
|
if (k.name) {
|
|
35
|
-
var field = (k.
|
|
35
|
+
var field = (k.column ? k.column : k.name);
|
|
36
36
|
cols.push(field + " = " + buildParam(i++));
|
|
37
37
|
args.push(obj[k.name]);
|
|
38
38
|
}
|
|
@@ -53,7 +53,7 @@ function exist(obj, table, ks, buildParam, col, i) {
|
|
|
53
53
|
col = '*';
|
|
54
54
|
}
|
|
55
55
|
if (ks.length === 1) {
|
|
56
|
-
var field = (ks[0].
|
|
56
|
+
var field = (ks[0].column ? ks[0].column : ks[0].name);
|
|
57
57
|
if (typeof obj === 'number') {
|
|
58
58
|
var query = "select " + col + " from " + table + " where " + field + " = " + obj;
|
|
59
59
|
return { query: query, params: [] };
|
|
@@ -69,7 +69,7 @@ function exist(obj, table, ks, buildParam, col, i) {
|
|
|
69
69
|
for (var _i = 0, ks_2 = ks; _i < ks_2.length; _i++) {
|
|
70
70
|
var k = ks_2[_i];
|
|
71
71
|
if (k.name) {
|
|
72
|
-
var field = (k.
|
|
72
|
+
var field = (k.column ? k.column : k.name);
|
|
73
73
|
cols.push(field + " = " + buildParam(i++));
|
|
74
74
|
args.push(obj[k.name]);
|
|
75
75
|
}
|
|
@@ -87,7 +87,7 @@ function buildToDelete(obj, table, ks, buildParam, i) {
|
|
|
87
87
|
i = 1;
|
|
88
88
|
}
|
|
89
89
|
if (ks.length === 1) {
|
|
90
|
-
var field = (ks[0].
|
|
90
|
+
var field = (ks[0].column ? ks[0].column : ks[0].name);
|
|
91
91
|
if (typeof obj === 'number') {
|
|
92
92
|
var query = "delete from " + table + " where " + field + " = " + obj;
|
|
93
93
|
return { query: query, params: [] };
|
|
@@ -103,7 +103,7 @@ function buildToDelete(obj, table, ks, buildParam, i) {
|
|
|
103
103
|
for (var _i = 0, ks_3 = ks; _i < ks_3.length; _i++) {
|
|
104
104
|
var k = ks_3[_i];
|
|
105
105
|
if (k.name) {
|
|
106
|
-
var field = (k.
|
|
106
|
+
var field = (k.column ? k.column : k.name);
|
|
107
107
|
cols.push(field + " = " + buildParam(i++));
|
|
108
108
|
args.push(obj[k.name]);
|
|
109
109
|
}
|
|
@@ -145,7 +145,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
|
|
|
145
145
|
v = attr.default;
|
|
146
146
|
}
|
|
147
147
|
if (v !== undefined && v != null) {
|
|
148
|
-
var field = (attr.
|
|
148
|
+
var field = (attr.column ? attr.column : k);
|
|
149
149
|
cols.push(field);
|
|
150
150
|
if (k === ver) {
|
|
151
151
|
isVersion = true;
|
|
@@ -191,7 +191,7 @@ function buildToInsert(obj, table, attrs, buildParam, ver, i) {
|
|
|
191
191
|
}
|
|
192
192
|
if (!isVersion && ver && ver.length > 0) {
|
|
193
193
|
var attr = attrs[ver];
|
|
194
|
-
var field = (attr.
|
|
194
|
+
var field = (attr.column ? attr.column : ver);
|
|
195
195
|
cols.push(field);
|
|
196
196
|
values.push("" + 1);
|
|
197
197
|
}
|
|
@@ -230,7 +230,7 @@ function buildToInsertBatch(objs, table, attrs, buildParam, ver, i) {
|
|
|
230
230
|
var k = ks_5[_i];
|
|
231
231
|
var attr = attrs[k];
|
|
232
232
|
if (attr && !attr.ignored && !attr.noinsert) {
|
|
233
|
-
var field = (attr.
|
|
233
|
+
var field = (attr.column ? attr.column : k);
|
|
234
234
|
cols.push(field);
|
|
235
235
|
}
|
|
236
236
|
}
|
|
@@ -311,7 +311,7 @@ function buildToInsertBatch(objs, table, attrs, buildParam, ver, i) {
|
|
|
311
311
|
v = attr.default;
|
|
312
312
|
}
|
|
313
313
|
if (v !== undefined && v != null) {
|
|
314
|
-
var field = (attr.
|
|
314
|
+
var field = (attr.column ? attr.column : k);
|
|
315
315
|
cols.push(field);
|
|
316
316
|
if (k === ver) {
|
|
317
317
|
isVersion = true;
|
|
@@ -357,7 +357,7 @@ function buildToInsertBatch(objs, table, attrs, buildParam, ver, i) {
|
|
|
357
357
|
}
|
|
358
358
|
if (!isVersion && ver && ver.length > 0) {
|
|
359
359
|
var attr = attrs[ver];
|
|
360
|
-
var field = (attr.
|
|
360
|
+
var field = (attr.column ? attr.column : ver);
|
|
361
361
|
cols.push(field);
|
|
362
362
|
values.push("" + 1);
|
|
363
363
|
}
|
|
@@ -410,7 +410,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
|
|
|
410
410
|
pks.push(attr);
|
|
411
411
|
}
|
|
412
412
|
else if (!attr.noupdate) {
|
|
413
|
-
var field = (attr.
|
|
413
|
+
var field = (attr.column ? attr.column : k);
|
|
414
414
|
var x = void 0;
|
|
415
415
|
if (v == null) {
|
|
416
416
|
x = 'null';
|
|
@@ -460,7 +460,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
|
|
|
460
460
|
}
|
|
461
461
|
else {
|
|
462
462
|
var attr = attrs[na];
|
|
463
|
-
var field = (attr.
|
|
463
|
+
var field = (attr.column ? attr.column : pk.name);
|
|
464
464
|
var x = void 0;
|
|
465
465
|
if (v == null) {
|
|
466
466
|
x = 'null';
|
|
@@ -495,7 +495,7 @@ function buildToUpdate(obj, table, attrs, buildParam, ver, i) {
|
|
|
495
495
|
if (typeof v === 'number' && !isNaN(v)) {
|
|
496
496
|
var attr = attrs[ver];
|
|
497
497
|
if (attr) {
|
|
498
|
-
var field = (attr.
|
|
498
|
+
var field = (attr.column ? attr.column : ver);
|
|
499
499
|
colSet.push(field + "=" + (1 + v));
|
|
500
500
|
colQuery.push(field + "=" + v);
|
|
501
501
|
}
|
|
@@ -541,7 +541,7 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
|
|
|
541
541
|
var attr = attrs[k];
|
|
542
542
|
attr.name = k;
|
|
543
543
|
if (attr && !attr.ignored && !attr.key && !attr.version && !attr.noupdate) {
|
|
544
|
-
var field = (attr.
|
|
544
|
+
var field = (attr.column ? attr.column : k);
|
|
545
545
|
var x = void 0;
|
|
546
546
|
if (v == null) {
|
|
547
547
|
x = 'null';
|
|
@@ -591,7 +591,7 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
|
|
|
591
591
|
}
|
|
592
592
|
else {
|
|
593
593
|
var attr = attrs[na];
|
|
594
|
-
var field = (attr.
|
|
594
|
+
var field = (attr.column ? attr.column : pk.name);
|
|
595
595
|
var x = void 0;
|
|
596
596
|
if (v == null) {
|
|
597
597
|
x = 'null';
|
|
@@ -633,7 +633,7 @@ function buildToUpdateBatch(objs, table, attrs, buildParam, notSkipInvalid) {
|
|
|
633
633
|
if (typeof v === 'number' && !isNaN(v)) {
|
|
634
634
|
var attr = attrs[ver];
|
|
635
635
|
if (attr) {
|
|
636
|
-
var field = (attr.
|
|
636
|
+
var field = (attr.column ? attr.column : ver);
|
|
637
637
|
colSet.push(field + "=" + (1 + v));
|
|
638
638
|
colQuery.push(field + "=" + v);
|
|
639
639
|
}
|
|
@@ -694,7 +694,7 @@ function buildMap(attrs) {
|
|
|
694
694
|
var k = ks_13[_i];
|
|
695
695
|
var attr = attrs[k];
|
|
696
696
|
attr.name = k;
|
|
697
|
-
var field = (attr.
|
|
697
|
+
var field = (attr.column ? attr.column : k);
|
|
698
698
|
var s = field.toLowerCase();
|
|
699
699
|
if (s !== k) {
|
|
700
700
|
mp[s] = k;
|
|
@@ -727,7 +727,7 @@ function metadata(attrs) {
|
|
|
727
727
|
if (attr.version) {
|
|
728
728
|
m.version = k;
|
|
729
729
|
}
|
|
730
|
-
var field = (attr.
|
|
730
|
+
var field = (attr.column ? attr.column : k);
|
|
731
731
|
var s = field.toLowerCase();
|
|
732
732
|
if (s !== k) {
|
|
733
733
|
mp[s] = k;
|
|
@@ -747,7 +747,7 @@ function attributes(attrs, isKey) {
|
|
|
747
747
|
var ks = [];
|
|
748
748
|
for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {
|
|
749
749
|
var s = attrs_1[_i];
|
|
750
|
-
var a = { name: s,
|
|
750
|
+
var a = { name: s, column: s, key: isKey };
|
|
751
751
|
ks.push(a);
|
|
752
752
|
}
|
|
753
753
|
return ks;
|
package/lib/index.js
CHANGED
|
@@ -4,12 +4,6 @@ function __export(m) {
|
|
|
4
4
|
}
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
var services_1 = require("./services");
|
|
7
|
-
exports.createGenericSearchRepository = services_1.createSqlSearchWriter;
|
|
8
|
-
exports.createGenericSearchService = services_1.createSqlSearchWriter;
|
|
9
|
-
exports.createRepository = services_1.createSqlSearchWriter;
|
|
10
|
-
exports.createService = services_1.createSqlSearchWriter;
|
|
11
|
-
exports.createGenericRepository = services_1.createSqlWriter;
|
|
12
|
-
exports.createGenericService = services_1.createSqlWriter;
|
|
13
7
|
exports.SqlLoadRepository = services_1.SqlLoader;
|
|
14
8
|
exports.SqlViewRepository = services_1.SqlLoader;
|
|
15
9
|
exports.SqlLoadService = services_1.SqlLoader;
|
package/lib/query.js
CHANGED
|
@@ -38,8 +38,8 @@ function getField(name, map) {
|
|
|
38
38
|
if (typeof x === 'string') {
|
|
39
39
|
return x;
|
|
40
40
|
}
|
|
41
|
-
if (x.
|
|
42
|
-
return x.
|
|
41
|
+
if (x.column) {
|
|
42
|
+
return x.column;
|
|
43
43
|
}
|
|
44
44
|
return name;
|
|
45
45
|
}
|
|
@@ -106,7 +106,7 @@ function buildQuery(filter, bparam, table, attrs, sort, fields, sq, strExcluding
|
|
|
106
106
|
if (v !== undefined && v != null) {
|
|
107
107
|
var attr = attrs[key];
|
|
108
108
|
if (attr) {
|
|
109
|
-
field = (attr.
|
|
109
|
+
field = (attr.column ? attr.column : key);
|
|
110
110
|
if (typeof v === 'string') {
|
|
111
111
|
if (v.length !== 0) {
|
|
112
112
|
if (attr.q) {
|
|
@@ -280,7 +280,7 @@ function getId(attrs) {
|
|
|
280
280
|
var key = qkeys_2[_i];
|
|
281
281
|
var attr = attrs[key];
|
|
282
282
|
if (attr.key) {
|
|
283
|
-
var field = (attr.
|
|
283
|
+
var field = (attr.column ? attr.column : key);
|
|
284
284
|
return field;
|
|
285
285
|
}
|
|
286
286
|
}
|
|
@@ -296,7 +296,7 @@ function buildFieldsByAttributes(attrs, fields) {
|
|
|
296
296
|
var f = fields_1[_i];
|
|
297
297
|
var attr = attrs[f];
|
|
298
298
|
if (attr) {
|
|
299
|
-
var field = (attr.
|
|
299
|
+
var field = (attr.column ? attr.column : f);
|
|
300
300
|
cols.push(field);
|
|
301
301
|
}
|
|
302
302
|
}
|
package/lib/services.js
CHANGED
|
@@ -67,7 +67,7 @@ var SqlLoader = (function () {
|
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
69
|
SqlLoader.prototype.exist = function (id, ctx) {
|
|
70
|
-
var field = (this.primaryKeys[0].
|
|
70
|
+
var field = (this.primaryKeys[0].column ? this.primaryKeys[0].column : this.primaryKeys[0].name);
|
|
71
71
|
var stmt = build_1.exist(id, this.table, this.primaryKeys, this.param, field);
|
|
72
72
|
if (!stmt) {
|
|
73
73
|
throw new Error('cannot build query by id');
|
|
@@ -91,18 +91,14 @@ var SqlSearchLoader = (function (_super) {
|
|
|
91
91
|
return SqlSearchLoader;
|
|
92
92
|
}(SqlLoader));
|
|
93
93
|
exports.SqlSearchLoader = SqlSearchLoader;
|
|
94
|
-
function createSqlWriter(table, manager, attrs, buildParam, toDB, fromDB) {
|
|
95
|
-
var writer = new SqlWriter(table, manager.query, manager.exec, attrs, buildParam, toDB, fromDB);
|
|
96
|
-
return writer;
|
|
97
|
-
}
|
|
98
|
-
exports.createSqlWriter = createSqlWriter;
|
|
99
94
|
var SqlWriter = (function (_super) {
|
|
100
95
|
__extends(SqlWriter, _super);
|
|
101
|
-
function SqlWriter(
|
|
102
|
-
var _this = _super.call(this, table, query, attrs,
|
|
103
|
-
_this.exec = exec;
|
|
96
|
+
function SqlWriter(manager, table, attrs, toDB, fromDB) {
|
|
97
|
+
var _this = _super.call(this, table, manager.query, attrs, manager.param, fromDB) || this;
|
|
104
98
|
_this.toDB = toDB;
|
|
105
99
|
var x = build_1.version(attrs);
|
|
100
|
+
_this.exec = manager.exec;
|
|
101
|
+
_this.execBatch = manager.execBatch;
|
|
106
102
|
if (x) {
|
|
107
103
|
_this.version = x.name;
|
|
108
104
|
}
|
|
@@ -162,8 +158,8 @@ var SqlWriter = (function (_super) {
|
|
|
162
158
|
exports.SqlWriter = SqlWriter;
|
|
163
159
|
var SqlSearchWriter = (function (_super) {
|
|
164
160
|
__extends(SqlSearchWriter, _super);
|
|
165
|
-
function SqlSearchWriter(find,
|
|
166
|
-
var _this = _super.call(this,
|
|
161
|
+
function SqlSearchWriter(find, manager, table, attrs, toDB, fromDB) {
|
|
162
|
+
var _this = _super.call(this, manager, table, attrs, toDB, fromDB) || this;
|
|
167
163
|
_this.find = find;
|
|
168
164
|
_this.search = _this.search.bind(_this);
|
|
169
165
|
return _this;
|
|
@@ -174,8 +170,3 @@ var SqlSearchWriter = (function (_super) {
|
|
|
174
170
|
return SqlSearchWriter;
|
|
175
171
|
}(SqlWriter));
|
|
176
172
|
exports.SqlSearchWriter = SqlSearchWriter;
|
|
177
|
-
function createSqlSearchWriter(find, table, manager, attrs, buildParam, toDB, fromDB) {
|
|
178
|
-
var writer = new SqlSearchWriter(find, table, manager.query, manager.exec, attrs, buildParam, toDB, fromDB);
|
|
179
|
-
return writer;
|
|
180
|
-
}
|
|
181
|
-
exports.createSqlSearchWriter = createSqlSearchWriter;
|
package/package.json
CHANGED
package/src/build.ts
CHANGED
|
@@ -15,7 +15,7 @@ export function select<T>(obj: T, table: string, ks: Attribute[], buildParam: (i
|
|
|
15
15
|
i = 1;
|
|
16
16
|
}
|
|
17
17
|
if (ks.length === 1) {
|
|
18
|
-
const field = (ks[0].
|
|
18
|
+
const field = (ks[0].column ? ks[0].column : ks[0].name);
|
|
19
19
|
if (typeof obj === 'number') {
|
|
20
20
|
const query = `select * from ${table} where ${field} = ${obj}`;
|
|
21
21
|
return { query, params: [] };
|
|
@@ -28,7 +28,7 @@ export function select<T>(obj: T, table: string, ks: Attribute[], buildParam: (i
|
|
|
28
28
|
const args: any[] = [];
|
|
29
29
|
for (const k of ks) {
|
|
30
30
|
if (k.name) {
|
|
31
|
-
const field = (k.
|
|
31
|
+
const field = (k.column ? k.column : k.name);
|
|
32
32
|
cols.push(`${field} = ${buildParam(i++)}`);
|
|
33
33
|
args.push((obj as any)[k.name]);
|
|
34
34
|
}
|
|
@@ -47,7 +47,7 @@ export function exist<T>(obj: T, table: string, ks: Attribute[], buildParam: (i:
|
|
|
47
47
|
col = '*';
|
|
48
48
|
}
|
|
49
49
|
if (ks.length === 1) {
|
|
50
|
-
const field = (ks[0].
|
|
50
|
+
const field = (ks[0].column ? ks[0].column : ks[0].name);
|
|
51
51
|
if (typeof obj === 'number') {
|
|
52
52
|
const query = `select ${col} from ${table} where ${field} = ${obj}`;
|
|
53
53
|
return { query, params: [] };
|
|
@@ -60,7 +60,7 @@ export function exist<T>(obj: T, table: string, ks: Attribute[], buildParam: (i:
|
|
|
60
60
|
const args: any[] = [];
|
|
61
61
|
for (const k of ks) {
|
|
62
62
|
if (k.name) {
|
|
63
|
-
const field = (k.
|
|
63
|
+
const field = (k.column ? k.column : k.name);
|
|
64
64
|
cols.push(`${field} = ${buildParam(i++)}`);
|
|
65
65
|
args.push((obj as any)[k.name]);
|
|
66
66
|
}
|
|
@@ -76,7 +76,7 @@ export function buildToDelete<T>(obj: T, table: string, ks: Attribute[], buildPa
|
|
|
76
76
|
i = 1;
|
|
77
77
|
}
|
|
78
78
|
if (ks.length === 1) {
|
|
79
|
-
const field = (ks[0].
|
|
79
|
+
const field = (ks[0].column ? ks[0].column : ks[0].name);
|
|
80
80
|
if (typeof obj === 'number') {
|
|
81
81
|
const query = `delete from ${table} where ${field} = ${obj}`;
|
|
82
82
|
return { query, params: [] };
|
|
@@ -89,7 +89,7 @@ export function buildToDelete<T>(obj: T, table: string, ks: Attribute[], buildPa
|
|
|
89
89
|
const args: any[] = [];
|
|
90
90
|
for (const k of ks) {
|
|
91
91
|
if (k.name) {
|
|
92
|
-
const field = (k.
|
|
92
|
+
const field = (k.column ? k.column : k.name);
|
|
93
93
|
cols.push(`${field} = ${buildParam(i++)}`);
|
|
94
94
|
args.push((obj as any)[k.name]);
|
|
95
95
|
}
|
|
@@ -126,7 +126,7 @@ export function buildToInsert<T>(obj: T, table: string, attrs: Attributes, build
|
|
|
126
126
|
v = attr.default;
|
|
127
127
|
}
|
|
128
128
|
if (v !== undefined && v != null) {
|
|
129
|
-
const field = (attr.
|
|
129
|
+
const field = (attr.column ? attr.column : k);
|
|
130
130
|
cols.push(field);
|
|
131
131
|
if (k === ver) {
|
|
132
132
|
isVersion = true;
|
|
@@ -165,7 +165,7 @@ export function buildToInsert<T>(obj: T, table: string, attrs: Attributes, build
|
|
|
165
165
|
}
|
|
166
166
|
if (!isVersion && ver && ver.length > 0) {
|
|
167
167
|
const attr = attrs[ver];
|
|
168
|
-
const field = (attr.
|
|
168
|
+
const field = (attr.column ? attr.column : ver);
|
|
169
169
|
cols.push(field);
|
|
170
170
|
values.push(`${1}`);
|
|
171
171
|
}
|
|
@@ -199,7 +199,7 @@ export function buildToInsertBatch<T>(objs: T[], table: string, attrs: Attribute
|
|
|
199
199
|
for (const k of ks) {
|
|
200
200
|
const attr = attrs[k];
|
|
201
201
|
if (attr && !attr.ignored && !attr.noinsert) {
|
|
202
|
-
const field = (attr.
|
|
202
|
+
const field = (attr.column ? attr.column : k);
|
|
203
203
|
cols.push(field);
|
|
204
204
|
}
|
|
205
205
|
}
|
|
@@ -268,7 +268,7 @@ export function buildToInsertBatch<T>(objs: T[], table: string, attrs: Attribute
|
|
|
268
268
|
v = attr.default;
|
|
269
269
|
}
|
|
270
270
|
if (v !== undefined && v != null) {
|
|
271
|
-
const field = (attr.
|
|
271
|
+
const field = (attr.column ? attr.column : k);
|
|
272
272
|
cols.push(field);
|
|
273
273
|
if (k === ver) {
|
|
274
274
|
isVersion = true;
|
|
@@ -307,7 +307,7 @@ export function buildToInsertBatch<T>(objs: T[], table: string, attrs: Attribute
|
|
|
307
307
|
}
|
|
308
308
|
if (!isVersion && ver && ver.length > 0) {
|
|
309
309
|
const attr = attrs[ver];
|
|
310
|
-
const field = (attr.
|
|
310
|
+
const field = (attr.column ? attr.column : ver);
|
|
311
311
|
cols.push(field);
|
|
312
312
|
values.push(`${1}`);
|
|
313
313
|
}
|
|
@@ -354,7 +354,7 @@ export function buildToUpdate<T>(obj: T, table: string, attrs: Attributes, build
|
|
|
354
354
|
if (attr.key) {
|
|
355
355
|
pks.push(attr);
|
|
356
356
|
} else if (!attr.noupdate) {
|
|
357
|
-
const field = (attr.
|
|
357
|
+
const field = (attr.column ? attr.column : k);
|
|
358
358
|
let x: string;
|
|
359
359
|
if (v == null) {
|
|
360
360
|
x = 'null';
|
|
@@ -395,7 +395,7 @@ export function buildToUpdate<T>(obj: T, table: string, attrs: Attributes, build
|
|
|
395
395
|
return undefined;
|
|
396
396
|
} else {
|
|
397
397
|
const attr = attrs[na];
|
|
398
|
-
const field = (attr.
|
|
398
|
+
const field = (attr.column ? attr.column : pk.name);
|
|
399
399
|
let x: string;
|
|
400
400
|
if (v == null) {
|
|
401
401
|
x = 'null';
|
|
@@ -425,7 +425,7 @@ export function buildToUpdate<T>(obj: T, table: string, attrs: Attributes, build
|
|
|
425
425
|
if (typeof v === 'number' && !isNaN(v)) {
|
|
426
426
|
const attr = attrs[ver];
|
|
427
427
|
if (attr) {
|
|
428
|
-
const field = (attr.
|
|
428
|
+
const field = (attr.column ? attr.column : ver);
|
|
429
429
|
colSet.push(`${field}=${(1 + v)}`);
|
|
430
430
|
colQuery.push(`${field}=${v}`);
|
|
431
431
|
}
|
|
@@ -465,7 +465,7 @@ export function buildToUpdateBatch<T>(objs: T[], table: string, attrs: Attribute
|
|
|
465
465
|
const attr = attrs[k];
|
|
466
466
|
attr.name = k;
|
|
467
467
|
if (attr && !attr.ignored && !attr.key && !attr.version && !attr.noupdate) {
|
|
468
|
-
const field = (attr.
|
|
468
|
+
const field = (attr.column ? attr.column : k);
|
|
469
469
|
let x: string;
|
|
470
470
|
if (v == null) {
|
|
471
471
|
x = 'null';
|
|
@@ -506,7 +506,7 @@ export function buildToUpdateBatch<T>(objs: T[], table: string, attrs: Attribute
|
|
|
506
506
|
valid = false;
|
|
507
507
|
} else {
|
|
508
508
|
const attr = attrs[na];
|
|
509
|
-
const field = (attr.
|
|
509
|
+
const field = (attr.column ? attr.column : pk.name);
|
|
510
510
|
let x: string;
|
|
511
511
|
if (v == null) {
|
|
512
512
|
x = 'null';
|
|
@@ -542,7 +542,7 @@ export function buildToUpdateBatch<T>(objs: T[], table: string, attrs: Attribute
|
|
|
542
542
|
if (typeof v === 'number' && !isNaN(v)) {
|
|
543
543
|
const attr = attrs[ver];
|
|
544
544
|
if (attr) {
|
|
545
|
-
const field = (attr.
|
|
545
|
+
const field = (attr.column ? attr.column : ver);
|
|
546
546
|
colSet.push(`${field}=${(1 + v)}`);
|
|
547
547
|
colQuery.push(`${field}=${v}`);
|
|
548
548
|
}
|
|
@@ -595,7 +595,7 @@ export function buildMap(attrs: Attributes): StringMap {
|
|
|
595
595
|
for (const k of ks) {
|
|
596
596
|
const attr = attrs[k];
|
|
597
597
|
attr.name = k;
|
|
598
|
-
const field = (attr.
|
|
598
|
+
const field = (attr.column ? attr.column : k);
|
|
599
599
|
const s = field.toLowerCase();
|
|
600
600
|
if (s !== k) {
|
|
601
601
|
mp[s] = k;
|
|
@@ -633,7 +633,7 @@ export function metadata(attrs: Attributes): Metadata {
|
|
|
633
633
|
if (attr.version) {
|
|
634
634
|
m.version = k;
|
|
635
635
|
}
|
|
636
|
-
const field = (attr.
|
|
636
|
+
const field = (attr.column ? attr.column : k);
|
|
637
637
|
const s = field.toLowerCase();
|
|
638
638
|
if (s !== k) {
|
|
639
639
|
mp[s] = k;
|
|
@@ -651,7 +651,7 @@ export function metadata(attrs: Attributes): Metadata {
|
|
|
651
651
|
export function attributes(attrs: string[], isKey?: boolean) {
|
|
652
652
|
const ks: Attribute[] = [];
|
|
653
653
|
for (const s of attrs) {
|
|
654
|
-
const a: Attribute = {name: s,
|
|
654
|
+
const a: Attribute = {name: s, column: s, key: isKey};
|
|
655
655
|
ks.push(a);
|
|
656
656
|
}
|
|
657
657
|
return ks;
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {Attribute, StringMap} from './metadata';
|
|
2
|
-
import {
|
|
2
|
+
import {SqlLoader, SqlSearchLoader, SqlSearchWriter, SqlWriter} from './services';
|
|
3
3
|
export {SqlLoader as SqlLoadRepository};
|
|
4
4
|
export {SqlLoader as SqlViewRepository};
|
|
5
5
|
export {SqlWriter as SqlGenericRepository};
|
|
@@ -23,12 +23,6 @@ export {SqlSearchWriter as SqlRepository};
|
|
|
23
23
|
export {SqlSearchWriter as SqlService};
|
|
24
24
|
export {SqlSearchWriter as Repository};
|
|
25
25
|
export {SqlSearchWriter as Service};
|
|
26
|
-
export {createSqlWriter as createGenericRepository};
|
|
27
|
-
export {createSqlWriter as createGenericService};
|
|
28
|
-
export {createSqlSearchWriter as createGenericSearchRepository};
|
|
29
|
-
export {createSqlSearchWriter as createGenericSearchService};
|
|
30
|
-
export {createSqlSearchWriter as createRepository};
|
|
31
|
-
export {createSqlSearchWriter as createService};
|
|
32
26
|
|
|
33
27
|
export * from './metadata';
|
|
34
28
|
export * from './build';
|
package/src/metadata.ts
CHANGED
|
@@ -19,9 +19,9 @@ export interface Statement {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export type DataType = 'ObjectId' | 'date' | 'datetime' | 'time'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
| 'boolean' | 'number' | 'integer' | 'string' | 'text'
|
|
23
|
+
| 'object' | 'array' | 'binary'
|
|
24
|
+
| 'primitives' | 'booleans' | 'numbers' | 'integers' | 'strings' | 'dates' | 'datetimes' | 'times';
|
|
25
25
|
export type FormatType = 'currency' | 'percentage' | 'email' | 'url' | 'phone' | 'fax' | 'ipv4' | 'ipv6';
|
|
26
26
|
export type MatchType = 'equal' | 'prefix' | 'contain' | 'max' | 'min'; // contain: default for string, min: default for Date, number
|
|
27
27
|
|
|
@@ -29,28 +29,41 @@ export interface Model {
|
|
|
29
29
|
name?: string;
|
|
30
30
|
attributes: Attributes;
|
|
31
31
|
source?: string;
|
|
32
|
+
table?: string;
|
|
33
|
+
collection?: string;
|
|
34
|
+
model?: any;
|
|
35
|
+
schema?: any;
|
|
32
36
|
}
|
|
33
37
|
export interface Attribute {
|
|
34
38
|
name?: string;
|
|
35
39
|
field?: string;
|
|
40
|
+
column?: string;
|
|
36
41
|
type?: DataType;
|
|
37
42
|
format?: FormatType;
|
|
38
43
|
required?: boolean;
|
|
39
44
|
match?: MatchType;
|
|
40
|
-
default?: string|number|Date;
|
|
45
|
+
default?: string|number|Date|boolean;
|
|
41
46
|
key?: boolean;
|
|
47
|
+
unique?: boolean;
|
|
48
|
+
enum?: string[] | number[];
|
|
42
49
|
q?: boolean;
|
|
43
50
|
noinsert?: boolean;
|
|
44
51
|
noupdate?: boolean;
|
|
52
|
+
nopatch?: boolean;
|
|
45
53
|
version?: boolean;
|
|
46
|
-
ignored?: boolean;
|
|
47
54
|
length?: number;
|
|
48
55
|
min?: number;
|
|
49
56
|
max?: number;
|
|
50
57
|
gt?: number;
|
|
51
58
|
lt?: number;
|
|
52
|
-
|
|
59
|
+
precision?: number;
|
|
60
|
+
scale?: number;
|
|
61
|
+
exp?: RegExp | string;
|
|
53
62
|
code?: string;
|
|
63
|
+
noformat?: boolean;
|
|
64
|
+
ignored?: boolean;
|
|
65
|
+
jsonField?: string;
|
|
66
|
+
link?: string;
|
|
54
67
|
typeof?: Attributes;
|
|
55
68
|
true?: string|number;
|
|
56
69
|
false?: string|number;
|
package/src/query.ts
CHANGED
|
@@ -38,8 +38,8 @@ export function getField(name: string, map?: Attributes|StringMap): string {
|
|
|
38
38
|
if (typeof x === 'string') {
|
|
39
39
|
return x;
|
|
40
40
|
}
|
|
41
|
-
if (x.
|
|
42
|
-
return x.
|
|
41
|
+
if (x.column) {
|
|
42
|
+
return x.column;
|
|
43
43
|
}
|
|
44
44
|
return name;
|
|
45
45
|
}
|
|
@@ -100,7 +100,7 @@ export function buildQuery<S>(filter: S, bparam: LikeType|((i: number ) => strin
|
|
|
100
100
|
if (v !== undefined && v != null) {
|
|
101
101
|
const attr: Attribute = attrs[key];
|
|
102
102
|
if (attr) {
|
|
103
|
-
field = (attr.
|
|
103
|
+
field = (attr.column ? attr.column : key);
|
|
104
104
|
if (typeof v === 'string') {
|
|
105
105
|
if (v.length !== 0) {
|
|
106
106
|
if (attr.q) {
|
|
@@ -247,7 +247,7 @@ export function getId(attrs: Attributes): string|undefined {
|
|
|
247
247
|
for (const key of qkeys) {
|
|
248
248
|
const attr = attrs[key];
|
|
249
249
|
if (attr.key) {
|
|
250
|
-
const field = (attr.
|
|
250
|
+
const field = (attr.column ? attr.column : key);
|
|
251
251
|
return field;
|
|
252
252
|
}
|
|
253
253
|
}
|
|
@@ -261,7 +261,7 @@ export function buildFieldsByAttributes(attrs: Attributes, fields?: string[]): s
|
|
|
261
261
|
for (const f of fields) {
|
|
262
262
|
const attr = attrs[f];
|
|
263
263
|
if (attr) {
|
|
264
|
-
const field = (attr.
|
|
264
|
+
const field = (attr.column ? attr.column : f);
|
|
265
265
|
cols.push(field);
|
|
266
266
|
}
|
|
267
267
|
}
|
package/src/services.ts
CHANGED
|
@@ -15,8 +15,8 @@ export class SqlLoader<T, ID> {
|
|
|
15
15
|
constructor(public table: string,
|
|
16
16
|
public query: (sql: string, args?: any[], m?: StringMap, bools?: Attribute[], ctx?: any) => Promise<T[]>,
|
|
17
17
|
attrs: Attributes|string[],
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
public param: (i: number) => string,
|
|
19
|
+
public fromDB?: (v: T) => T) {
|
|
20
20
|
if (Array.isArray(attrs)) {
|
|
21
21
|
this.primaryKeys = attributes(attrs);
|
|
22
22
|
this.attributes = {} as any;
|
|
@@ -61,7 +61,7 @@ export class SqlLoader<T, ID> {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
exist(id: ID, ctx?: any): Promise<boolean> {
|
|
64
|
-
const field = (this.primaryKeys[0].
|
|
64
|
+
const field = (this.primaryKeys[0].column ? this.primaryKeys[0].column : this.primaryKeys[0].name);
|
|
65
65
|
const stmt = exist<ID>(id, this.table, this.primaryKeys, this.param, field);
|
|
66
66
|
if (!stmt) {
|
|
67
67
|
throw new Error('cannot build query by id');
|
|
@@ -85,31 +85,31 @@ export class SqlSearchLoader<T, ID, S extends Filter> extends SqlLoader<T, ID> {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
export interface Manager {
|
|
88
|
+
driver: string;
|
|
89
|
+
param(i: number): string;
|
|
88
90
|
exec(sql: string, args?: any[], ctx?: any): Promise<number>;
|
|
89
91
|
execBatch(statements: Statement[], firstSuccess?: boolean, ctx?: any): Promise<number>;
|
|
90
92
|
query<T>(sql: string, args?: any[], m?: StringMap, bools?: Attribute[], ctx?: any): Promise<T[]>;
|
|
91
93
|
}
|
|
92
|
-
export
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const writer = new SqlWriter<T, ID>(table, manager.query, manager.exec, attrs, buildParam, toDB, fromDB);
|
|
99
|
-
return writer;
|
|
94
|
+
export interface DB {
|
|
95
|
+
driver: string;
|
|
96
|
+
param(i: number): string;
|
|
97
|
+
exec(sql: string, args?: any[], ctx?: any): Promise<number>;
|
|
98
|
+
execBatch(statements: Statement[], firstSuccess?: boolean, ctx?: any): Promise<number>;
|
|
99
|
+
query<T>(sql: string, args?: any[], m?: StringMap, bools?: Attribute[], ctx?: any): Promise<T[]>;
|
|
100
100
|
}
|
|
101
|
-
|
|
102
101
|
export class SqlWriter<T, ID> extends SqlLoader<T, ID> {
|
|
103
102
|
version?: string;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
exec: (sql: string, args?: any[], ctx?: any) => Promise<number>;
|
|
104
|
+
execBatch: (statements: Statement[], firstSuccess?: boolean, ctx?: any) => Promise<number>;
|
|
105
|
+
constructor(manager: Manager, table: string,
|
|
107
106
|
attrs: Attributes,
|
|
108
|
-
|
|
109
|
-
protected toDB?: (v: T) => T,
|
|
107
|
+
public toDB?: (v: T) => T,
|
|
110
108
|
fromDB?: (v: T) => T) {
|
|
111
|
-
super(table, query, attrs,
|
|
109
|
+
super(table, manager.query, attrs, manager.param, fromDB);
|
|
112
110
|
const x = version(attrs);
|
|
111
|
+
this.exec = manager.exec;
|
|
112
|
+
this.execBatch = manager.execBatch;
|
|
113
113
|
if (x) {
|
|
114
114
|
this.version = x.name;
|
|
115
115
|
}
|
|
@@ -163,28 +163,15 @@ export class SqlWriter<T, ID> extends SqlLoader<T, ID> {
|
|
|
163
163
|
export class SqlSearchWriter<T, ID, S extends Filter> extends SqlWriter<T, ID> {
|
|
164
164
|
constructor(
|
|
165
165
|
protected find: (s: S, limit?: number, offset?: number|string, fields?: string[]) => Promise<SearchResult<T>>,
|
|
166
|
+
manager: Manager,
|
|
166
167
|
table: string,
|
|
167
|
-
query: (sql: string, args?: any[], m?: StringMap, ctx?: any) => Promise<T[]>,
|
|
168
|
-
exec: (sql: string, args?: any[], ctx?: any) => Promise<number>,
|
|
169
168
|
attrs: Attributes,
|
|
170
|
-
buildParam: (i: number) => string,
|
|
171
169
|
toDB?: (v: T) => T,
|
|
172
170
|
fromDB?: (v: T) => T) {
|
|
173
|
-
super(
|
|
171
|
+
super(manager, table, attrs, toDB, fromDB);
|
|
174
172
|
this.search = this.search.bind(this);
|
|
175
173
|
}
|
|
176
174
|
search(s: S, limit?: number, offset?: number|string, fields?: string[]): Promise<SearchResult<T>> {
|
|
177
175
|
return this.find(s, limit, offset, fields);
|
|
178
176
|
}
|
|
179
177
|
}
|
|
180
|
-
export function createSqlSearchWriter<T, ID, S extends Filter>(
|
|
181
|
-
find: (s: S, limit?: number, offset?: number|string, fields?: string[]) => Promise<SearchResult<T>>,
|
|
182
|
-
table: string,
|
|
183
|
-
manager: Manager,
|
|
184
|
-
attrs: Attributes,
|
|
185
|
-
buildParam: (i: number) => string,
|
|
186
|
-
toDB?: (v: T) => T,
|
|
187
|
-
fromDB?: (v: T) => T) {
|
|
188
|
-
const writer = new SqlSearchWriter<T, ID, S>(find, table, manager.query, manager.exec, attrs, buildParam, toDB, fromDB);
|
|
189
|
-
return writer;
|
|
190
|
-
}
|