@ts-awesome/orm 1.2.0-rc8 → 1.2.1-rc0
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/dist/builder.d.ts +2 -2
- package/dist/builder.js +34 -20
- package/dist/builder.js.map +1 -1
- package/dist/decorators.d.ts +6 -2
- package/dist/decorators.js +35 -4
- package/dist/decorators.js.map +1 -1
- package/dist/interfaces.d.ts +10 -0
- package/dist/test-driver/executor.d.ts +2 -1
- package/dist/test-driver/executor.js +11 -3
- package/dist/test-driver/executor.js.map +1 -1
- package/package.json +1 -1
- package/tests/builder.spec.ts +154 -2
- package/tests/models.ts +36 -1
- package/tests/reader.spec.ts +32 -8
package/dist/builder.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IBuildableQuery, IBuildableSelectQuery, IDeleteBuilder, IInsertBuilder, ISelectBuilder, ITableInfo, IUpdateBuilder, IUpsertBuilder, TableMetaProvider, IFieldInfo, IBuildableUpsertQuery, ITableRef, IBuildableDeleteQuery, IBuildableUpdateQuery, IBuildableInsertQuery, IIndexInfo } from './interfaces';
|
|
1
|
+
import { IBuildableQuery, IBuildableSelectQuery, IDeleteBuilder, IInsertBuilder, IOperandable, ISelectBuilder, ITableInfo, IUpdateBuilder, IUpsertBuilder, TableMetaProvider, IFieldInfo, IBuildableUpsertQuery, ITableRef, IBuildableDeleteQuery, IBuildableUpdateQuery, IBuildableInsertQuery, IIndexInfo } from './interfaces';
|
|
2
2
|
export interface IExpr {
|
|
3
3
|
_alias?: string;
|
|
4
4
|
_column?: string;
|
|
@@ -19,7 +19,7 @@ export declare class TableRef<T extends TableMetaProvider> implements ITableRef<
|
|
|
19
19
|
get indexes(): IIndexInfo<T>[];
|
|
20
20
|
}
|
|
21
21
|
export declare function readModelMeta<T extends TableMetaProvider>(Model: T, required?: boolean): ITableInfo;
|
|
22
|
-
export declare function Select<T extends TableMetaProvider>(_: T
|
|
22
|
+
export declare function Select<T extends TableMetaProvider>(_: T | IOperandable<T>, distinct?: boolean): ISelectBuilder<InstanceType<T>> & IBuildableSelectQuery;
|
|
23
23
|
export declare function Insert<T extends TableMetaProvider>(_: T): IInsertBuilder<InstanceType<T>> & IBuildableInsertQuery;
|
|
24
24
|
export declare function Upsert<T extends TableMetaProvider>(_: T): IUpsertBuilder<InstanceType<T>> & IBuildableUpsertQuery;
|
|
25
25
|
export declare function Update<T extends TableMetaProvider>(_: T): IUpdateBuilder<InstanceType<T>> & IBuildableUpdateQuery;
|
package/dist/builder.js
CHANGED
|
@@ -11,8 +11,8 @@ function proxy({ tableName: originalTableName, fields, primaryKey }, ignoreTable
|
|
|
11
11
|
if (!fields.has(property)) {
|
|
12
12
|
throw new Error(`Field '${property}' should be annotated with @dbField() or @dbManyField()`);
|
|
13
13
|
}
|
|
14
|
-
const { relatedTo, name } = fields.get(property);
|
|
15
|
-
if (!relatedTo) {
|
|
14
|
+
const { builder, relatedTo, name } = fields.get(property);
|
|
15
|
+
if (!relatedTo && !builder) {
|
|
16
16
|
const ref = resolveColumn(property, { tableName, fields });
|
|
17
17
|
if (ignoreTableName) {
|
|
18
18
|
ref.table = undefined;
|
|
@@ -22,6 +22,12 @@ function proxy({ tableName: originalTableName, fields, primaryKey }, ignoreTable
|
|
|
22
22
|
if (!primaryKey) {
|
|
23
23
|
throw new Error('@dbManyField() should be used on table with single field PK');
|
|
24
24
|
}
|
|
25
|
+
if (builder) {
|
|
26
|
+
const pk = new wrappers_1.ColumnWrapper({ table: tableName, name: primaryKey });
|
|
27
|
+
const query = builder(pk);
|
|
28
|
+
const stripped = Object.fromEntries(Object.entries(query).filter(([, value]) => typeof value !== 'function'));
|
|
29
|
+
return new wrappers_1.Operandable('SUBQUERY', [stripped]);
|
|
30
|
+
}
|
|
25
31
|
return new wrappers_1.Operandable('SUBQUERY', [{
|
|
26
32
|
_type: 'SELECT',
|
|
27
33
|
_columns: [
|
|
@@ -41,17 +47,19 @@ function proxy({ tableName: originalTableName, fields, primaryKey }, ignoreTable
|
|
|
41
47
|
}
|
|
42
48
|
});
|
|
43
49
|
}
|
|
44
|
-
function treeOf(_, tableInfo) {
|
|
50
|
+
function treeOf(_, tableInfo, alias) {
|
|
45
51
|
validateModel(_, tableInfo);
|
|
52
|
+
const tableName = alias !== null && alias !== void 0 ? alias : tableInfo.tableName;
|
|
46
53
|
return operators_1.and(...Object.keys(_)
|
|
47
|
-
.map(field => new wrappers_1.ColumnWrapper(resolveColumn(field, tableInfo)).eq(_[field])));
|
|
54
|
+
.map(field => new wrappers_1.ColumnWrapper(resolveColumn(field, { tableName, fields: tableInfo.fields })).eq(_[field])));
|
|
48
55
|
}
|
|
49
|
-
function columnsOf(_, { tableName, fields }) {
|
|
56
|
+
function columnsOf(_, { tableName: originaltableName, fields }, alias) {
|
|
50
57
|
_.forEach(field => {
|
|
51
|
-
if (!fields.has(field) || fields.get(field).relatedTo) {
|
|
58
|
+
if (!fields.has(field) || fields.get(field).relatedTo || fields.get(field).builder) {
|
|
52
59
|
throw new Error(`Field '${field}' should be decorated with @dbField`);
|
|
53
60
|
}
|
|
54
61
|
});
|
|
62
|
+
const tableName = alias !== null && alias !== void 0 ? alias : originaltableName;
|
|
55
63
|
return _.map(field => ({ _column: resolveColumn(field, { tableName, fields }) }));
|
|
56
64
|
}
|
|
57
65
|
function resolveColumn(property, { tableName, fields }) {
|
|
@@ -67,6 +75,7 @@ function resolveColumn(property, { tableName, fields }) {
|
|
|
67
75
|
table: tableName,
|
|
68
76
|
name,
|
|
69
77
|
wrapper: kind === null || kind === void 0 ? void 0 : kind.readQuery,
|
|
78
|
+
// writer: kind?.writer,
|
|
70
79
|
};
|
|
71
80
|
}
|
|
72
81
|
function validateModel(_, tableInfo) {
|
|
@@ -81,39 +90,39 @@ function validateFields(_, tableInfo) {
|
|
|
81
90
|
}
|
|
82
91
|
function where(_) {
|
|
83
92
|
const tree = typeof _ === 'function'
|
|
84
|
-
? _(proxy(this._table))
|
|
85
|
-
: treeOf(_, this._table);
|
|
93
|
+
? _(proxy(this._table, false, this._alias))
|
|
94
|
+
: treeOf(_, this._table, this._alias);
|
|
86
95
|
this._where = this._where || [];
|
|
87
96
|
this._where.push(tree);
|
|
88
97
|
return this;
|
|
89
98
|
}
|
|
90
99
|
function having(_) {
|
|
91
|
-
const tree = _(proxy(this._table));
|
|
100
|
+
const tree = _(proxy(this._table, false, this._alias));
|
|
92
101
|
this._having = this._having || [];
|
|
93
102
|
this._having.push(tree);
|
|
94
103
|
return this;
|
|
95
104
|
}
|
|
96
105
|
function columns(_) {
|
|
97
106
|
this._columns = typeof _ === 'function'
|
|
98
|
-
? _(proxy(this._table))
|
|
107
|
+
? _(proxy(this._table, false, this._alias))
|
|
99
108
|
: columnsOf(_, this._table);
|
|
100
109
|
return this;
|
|
101
110
|
}
|
|
102
111
|
function orderBy(_) {
|
|
103
112
|
this._orderBy = typeof _ === 'function'
|
|
104
|
-
? _(proxy(this._table))
|
|
113
|
+
? _(proxy(this._table, false, this._alias))
|
|
105
114
|
: columnsOf(_, this._table);
|
|
106
115
|
return this;
|
|
107
116
|
}
|
|
108
117
|
function groupBy(_) {
|
|
109
118
|
this._groupBy = typeof _ === 'function'
|
|
110
|
-
? _(proxy(this._table))
|
|
119
|
+
? _(proxy(this._table, false, this._alias))
|
|
111
120
|
: columnsOf(_, this._table);
|
|
112
121
|
return this;
|
|
113
122
|
}
|
|
114
123
|
function values(_) {
|
|
115
124
|
if (typeof _ === 'function') {
|
|
116
|
-
this._values = _(proxy(this._table));
|
|
125
|
+
this._values = _(proxy(this._table, false, this._alias));
|
|
117
126
|
}
|
|
118
127
|
else {
|
|
119
128
|
validateModel(_, this._table);
|
|
@@ -121,6 +130,7 @@ function values(_) {
|
|
|
121
130
|
.keys(_)
|
|
122
131
|
.filter(prop => this._table.fields.has(prop))
|
|
123
132
|
.map(prop => this._table.fields.get(prop))
|
|
133
|
+
.filter(({ relatedTo, builder }) => relatedTo == null && builder == null)
|
|
124
134
|
.reduce((p, { getValue, kind, name }) => {
|
|
125
135
|
let value = getValue(_);
|
|
126
136
|
let wrapper = undefined;
|
|
@@ -162,8 +172,8 @@ function conflict(_) {
|
|
|
162
172
|
_columns = index.keyFields.map(prop => { var _a; return (_a = this._table.fields.get(prop)) === null || _a === void 0 ? void 0 : _a.name; });
|
|
163
173
|
if (index.where) {
|
|
164
174
|
const tree = typeof index.where === 'function'
|
|
165
|
-
? index.where(proxy(this._table, true))
|
|
166
|
-
: treeOf(index.where, this._table);
|
|
175
|
+
? index.where(proxy(this._table, true, this._alias))
|
|
176
|
+
: treeOf(index.where, this._table, this._alias);
|
|
167
177
|
_where = [tree];
|
|
168
178
|
}
|
|
169
179
|
}
|
|
@@ -195,7 +205,7 @@ function join(...args) {
|
|
|
195
205
|
_tableName: table.tableName,
|
|
196
206
|
_alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
|
|
197
207
|
_type: 'INNER',
|
|
198
|
-
_condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
208
|
+
_condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
199
209
|
});
|
|
200
210
|
return this;
|
|
201
211
|
}
|
|
@@ -207,7 +217,7 @@ function joinLeft(...args) {
|
|
|
207
217
|
_tableName: table.tableName,
|
|
208
218
|
_alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
|
|
209
219
|
_type: 'LEFT',
|
|
210
|
-
_condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
220
|
+
_condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
211
221
|
});
|
|
212
222
|
return this;
|
|
213
223
|
}
|
|
@@ -219,7 +229,7 @@ function joinRight(...args) {
|
|
|
219
229
|
_tableName: table.tableName,
|
|
220
230
|
_alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
|
|
221
231
|
_type: 'RIGHT',
|
|
222
|
-
_condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
232
|
+
_condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
223
233
|
});
|
|
224
234
|
return this;
|
|
225
235
|
}
|
|
@@ -231,7 +241,7 @@ function joinFull(...args) {
|
|
|
231
241
|
_tableName: table.tableName,
|
|
232
242
|
_alias: alias === null || alias === void 0 ? void 0 : alias.tableName,
|
|
233
243
|
_type: 'FULL OUTER',
|
|
234
|
-
_condition: condition(proxy(this._table), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
244
|
+
_condition: condition(proxy(this._table, false, this._alias), proxy(table, undefined, alias === null || alias === void 0 ? void 0 : alias.tableName)),
|
|
235
245
|
});
|
|
236
246
|
return this;
|
|
237
247
|
}
|
|
@@ -267,9 +277,13 @@ function readModelMeta(Model, required = true) {
|
|
|
267
277
|
}
|
|
268
278
|
exports.readModelMeta = readModelMeta;
|
|
269
279
|
function Select(_, distinct = false) {
|
|
280
|
+
function isAlias(x) {
|
|
281
|
+
return x && typeof x._alias === 'string';
|
|
282
|
+
}
|
|
270
283
|
return {
|
|
271
284
|
_type: 'SELECT',
|
|
272
|
-
_table: readModelMeta(_),
|
|
285
|
+
_table: readModelMeta(isAlias(_) ? _._operands[0] : _),
|
|
286
|
+
_alias: isAlias(_) ? _._alias : null,
|
|
273
287
|
_distinct: distinct,
|
|
274
288
|
columns,
|
|
275
289
|
join,
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":";;;AAAA,yCAAsD;AA2BtD,2CAAgC;AAEhC,uCAA8C;AAW9C,SAAS,KAAK,CAAC,EAAC,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAa,EAAE,eAAyB,EAAE,KAAc;IACtH,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;QACnB,GAAG,CAAC,CAAC,EAAE,QAAgB;YACrB,MAAM,SAAS,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,iBAAiB,CAAC;YAE7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,UAAU,QAAQ,yDAAyD,CAAC,CAAC;aAC9F;YAED,MAAM,EAAC,SAAS,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAA;gBACxD,IAAI,eAAe,EAAE;oBACnB,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC;iBACvB;gBACD,OAAO,IAAI,wBAAa,CAAC,GAAG,CAAC,CAAC;aAC/B;YAED,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;aAChF;YAED,OAAO,IAAI,sBAAW,CAAC,UAAU,EAAE,CAAC;oBAClC,KAAK,EAAE,QAAQ;oBACf,QAAQ,EAAE;wBACR,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,EAAC,EAAE;qBAC/C;oBACD,MAAM,EAAE,EAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAW,EAAC;oBAC7D,MAAM,EAAE;wBACN;4BACE,SAAS,EAAE,GAAG;4BACd,SAAS,EAAE;gCACT,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAC,EAAE;gCAClE,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAC,EAAE;6BACjD;yBACF;qBACF;iBAC0B,CAAC,CAAC,CAAA;QACjC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAI,CAAa,EAAE,SAAqB;IACrD,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC5B,OAAO,eAAG,CACR,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SACd,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,IAAI,wBAAa,CAAC,aAAa,CAAC,KAAe,EAAE,SAAS,CAAC,CAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAChH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAI,CAAiB,EAAE,EAAC,SAAS,EAAE,MAAM,EAAa;IACtE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAe,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAe,CAAC,CAAC,SAAS,EAAE;YACzE,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,qCAAqC,CAAC,CAAA;SACtE;IACH,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAC,OAAO,EAAE,aAAa,CAAC,KAAe,EAAE,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,EAAC,SAAS,EAAE,MAAM,EAAa;IAEtE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,oCAAoC,CAAC,CAAC;KAC3E;IAED,MAAM,EAAC,IAAI,GAAG,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC;IACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACxD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;KAC3F;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,IAAI;QACJ,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS;KACzB,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAI,CAAa,EAAE,SAAqB;IAC5D,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,CAAW,EAAE,SAAqB;IACxD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACf,IAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,yDAAyD,CAAC,CAAC;SAC1F;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAkC,CAA+B;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,UAAU;QAClC,CAAC,CAAE,CAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAiC,CAAmB;IACjE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAQ,CAAC;IAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAiC,CAAqC;IACpF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,UAAU;QACrC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAkB;QACxC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAiC,CAAmC;IAClF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,UAAU;QACrC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAiB;QACvC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAiC,CAAqC;IACpF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,UAAU;QACrC,CAAC,CAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAwB;QAC/C,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAAmC,CAAgC;IAChF,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;QAC3B,IAAI,CAAC,OAAO,GAAI,CAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KAC5D;SAAM;QACL,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM;aAClB,IAAI,CAAC,CAAC,CAAC;aACP,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC5C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAa,EAAE,EAAE;YACrD,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,OAAO,GAAQ,SAAS,CAAC;YAE7B,IAAI,IAAI,EAAE;gBACR,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBACxD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;iBACrF;gBACD,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;gBAE1B,MAAM,EAAC,MAAM,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,IAAI,CAAC;gBACtC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aACvB;YACD,uCAAY,CAAC,KAAE,CAAC,IAAI,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,IAAG;QAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;KACV;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAiC,CAAU;IAC1D,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAsB,SAAS,CAAC;IAE1C,IAAI,CAAC,CAAC,EAAE;QACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,CAAC,UAAU,EAAE;gBAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,8BAA8B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;SAClF;QAED,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0CAAE,IAAI,CAAA,EAAA,CAAC,CAAC;QAE3E,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;gBAC5C,CAAC,CAAE,KAAK,CAAC,KAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC5D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;SACjB;KACF;IACD,IAAI,CAAC,YAAY,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,KAAK,CAA+B,KAAa;IACxD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,MAAM,CAA8B,MAAc;IACzD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAA8B,GAAG,IAAW;IAChE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,IAAW,CAAC;KACpB;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAID,SAAS,IAAI,CAA2D,GAAG,IAAW;IACpF,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAI,GAAG,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,MAAM,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS;QACxB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC,CAAQ;KAC5F,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAID,SAAS,QAAQ,CAA2D,GAAG,IAAW;IACxF,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAI,GAAG,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,MAAM,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS;QACxB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC,CAAQ;KAC5F,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAID,SAAS,SAAS,CAA2D,GAAG,IAAW;IACzF,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAI,GAAG,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,MAAM,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS;QACxB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC,CAAQ;KAC5F,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAID,SAAS,QAAQ,CAA2D,GAAG,IAAW;IACxF,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,aAAa,CAAI,GAAG,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,MAAM,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS;QACxB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,CAAC,CAAQ;KAC5F,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAa,QAAQ;IAInB,YAAoB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;QAC1B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IACD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IACD,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,CAAC;CACF;AAxBD,4BAwBC;AAED,SAAgB,aAAa,CAA8B,KAAQ,EAAE,QAAQ,GAAG,IAAI;;IAClF,IAAI,KAAK,CAAC,6BAAmB,CAAC,IAAI,IAAI,IAAI,QAAQ,EAAE;QAClD,MAAM,IAAI,KAAK,CAAC,SAAS,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,mCAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;KACzG;IACD,OAAO,MAAA,KAAK,CAAC,6BAAmB,CAAC,mCAAI,EAAE,CAAC;AAC1C,CAAC;AALD,sCAKC;AAED,SAAgB,MAAM,CAA8B,CAAI,EAAE,QAAQ,GAAG,KAAK;IACxE,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACxB,SAAS,EAAE,QAAQ;QACnB,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,KAAK;QACL,MAAM;QACN,OAAO;QACP,OAAO;QACP,KAAK;QACL,MAAM;KACyB,CAAC;AACpC,CAAC;AAjBD,wBAiBC;AAED,SAAgB,MAAM,CAA8B,CAAI;IACtD,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACxB,MAAM;KACyB,CAAC;AACpC,CAAC;AAND,wBAMC;AAED,SAAgB,MAAM,CAA8B,CAAI;IACtD,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC;QACT,MAAM;QACN,KAAK;QACL,KAAK;QACL,QAAQ;KACuB,CAAC;AACpC,CAAC;AAVD,wBAUC;AAED,SAAgB,MAAM,CAA8B,CAAI;IACtD,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACxB,MAAM;QACN,KAAK;QACL,KAAK;KAC0B,CAAC;AACpC,CAAC;AARD,wBAQC;AAED,SAAgB,MAAM,CAA8B,CAAI;IACtD,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QACxB,KAAK;QACL,KAAK;KAC0B,CAAC;AACpC,CAAC;AAPD,wBAOC"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/decorators.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IFieldInfo, WhereBuilder } from './interfaces';
|
|
1
|
+
import { IFieldInfo, WhereBuilder, SubQueryBuilder } from './interfaces';
|
|
2
2
|
interface IDBIndexMeta<T> {
|
|
3
3
|
fields: string[];
|
|
4
4
|
name: string;
|
|
@@ -12,10 +12,14 @@ interface IDBFieldMeta extends Omit<IFieldInfo, 'getValue' | 'relatedTo' | 'name
|
|
|
12
12
|
}
|
|
13
13
|
export declare function dbField(target: any, key: string): void;
|
|
14
14
|
export declare function dbField(fieldMeta?: string | IDBFieldMeta): PropertyDecorator;
|
|
15
|
-
interface
|
|
15
|
+
interface IDBFilterFieldMeta {
|
|
16
16
|
table: string;
|
|
17
17
|
keyField: string;
|
|
18
18
|
valueField: string;
|
|
19
19
|
}
|
|
20
|
+
interface IDBManyFieldMeta extends IDBFilterFieldMeta, Pick<IFieldInfo, 'nullable' | 'model' | 'kind'> {
|
|
21
|
+
}
|
|
22
|
+
export declare function dbFilterField(fieldMeta: IDBFilterFieldMeta): PropertyDecorator;
|
|
23
|
+
export declare function dbFilterField<T = number>(builder: SubQueryBuilder<T>): PropertyDecorator;
|
|
20
24
|
export declare function dbManyField(fieldMeta: IDBManyFieldMeta): PropertyDecorator;
|
|
21
25
|
export {};
|
package/dist/decorators.js
CHANGED
|
@@ -11,7 +11,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.dbManyField = exports.dbField = exports.dbTable = void 0;
|
|
14
|
+
exports.dbManyField = exports.dbFilterField = exports.dbField = exports.dbTable = void 0;
|
|
15
15
|
const symbols_1 = require("./symbols");
|
|
16
16
|
const model_reader_1 = require("@ts-awesome/model-reader");
|
|
17
17
|
function ensureTableInfo(proto) {
|
|
@@ -80,16 +80,47 @@ function dbField(...args) {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
exports.dbField = dbField;
|
|
83
|
-
|
|
84
|
-
function dbManyField(fieldMeta) {
|
|
83
|
+
function dbFilterField(fieldMeta) {
|
|
85
84
|
return function (target, key) {
|
|
86
85
|
const { fields } = ensureTableInfo(target.constructor);
|
|
86
|
+
if (typeof fieldMeta === 'function') {
|
|
87
|
+
const name = key.toString();
|
|
88
|
+
fields.set(key.toString(), {
|
|
89
|
+
name,
|
|
90
|
+
builder: fieldMeta,
|
|
91
|
+
getValue: () => undefined,
|
|
92
|
+
});
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
87
95
|
const { valueField, keyField, table } = fieldMeta, rest = __rest(fieldMeta, ["valueField", "keyField", "table"]);
|
|
88
96
|
fields.set(key.toString(), Object.assign(Object.assign({}, rest), { name: valueField, relatedTo: {
|
|
89
97
|
keyField,
|
|
90
98
|
tableName: table,
|
|
91
|
-
}, getValue:
|
|
99
|
+
}, getValue: () => undefined }));
|
|
92
100
|
};
|
|
93
101
|
}
|
|
102
|
+
exports.dbFilterField = dbFilterField;
|
|
103
|
+
// @deprecated
|
|
104
|
+
// noinspection JSUnusedGlobalSymbols
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
106
|
+
function dbManyField(fieldMeta) {
|
|
107
|
+
throw new Error(`@dbManyField is buggy, use @dbFilterField instead`);
|
|
108
|
+
// return function (target: Object, key: string | symbol): void {
|
|
109
|
+
// const {fields} = ensureTableInfo(target.constructor);
|
|
110
|
+
// const {valueField, keyField, table, ...rest}: IDBManyFieldMeta = fieldMeta;
|
|
111
|
+
// fields.set(key.toString(), {
|
|
112
|
+
// ...rest,
|
|
113
|
+
// name: valueField,
|
|
114
|
+
// relatedTo: {
|
|
115
|
+
// keyField,
|
|
116
|
+
// tableName: table,
|
|
117
|
+
// },
|
|
118
|
+
// getValue: x => x[key],
|
|
119
|
+
// });
|
|
120
|
+
//
|
|
121
|
+
// const {model, nullable = false} = fields.get(key.toString());
|
|
122
|
+
// readable(model as any, nullable as any)(target, key);
|
|
123
|
+
// };
|
|
124
|
+
}
|
|
94
125
|
exports.dbManyField = dbManyField;
|
|
95
126
|
//# sourceMappingURL=decorators.js.map
|
package/dist/decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/interfaces.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IExpression, IJoin, IOrderBy, IReference } from './intermediate';
|
|
2
|
+
import { Operandable } from "./wrappers";
|
|
2
3
|
export declare type DbValueType = string | number | boolean | Date | null | undefined;
|
|
3
4
|
export interface IDbField<T = any> {
|
|
4
5
|
readQuery?(name: string): string;
|
|
@@ -6,6 +7,9 @@ export interface IDbField<T = any> {
|
|
|
6
7
|
reader?(raw: DbValueType): T;
|
|
7
8
|
writer?(value: T): DbValueType;
|
|
8
9
|
}
|
|
10
|
+
export interface SubQueryBuilder<T = number> {
|
|
11
|
+
(value: Operandable<T>): IBuildableSubSelectQuery;
|
|
12
|
+
}
|
|
9
13
|
declare type Class = new (...args: any) => any;
|
|
10
14
|
export interface IFieldInfo {
|
|
11
15
|
primaryKey?: true;
|
|
@@ -16,6 +20,7 @@ export interface IFieldInfo {
|
|
|
16
20
|
tableName: string;
|
|
17
21
|
keyField: string;
|
|
18
22
|
};
|
|
23
|
+
builder?: SubQueryBuilder<any>;
|
|
19
24
|
sensitive?: true;
|
|
20
25
|
default?: DbValueType;
|
|
21
26
|
kind?: IDbField;
|
|
@@ -89,16 +94,19 @@ export interface Order {
|
|
|
89
94
|
}
|
|
90
95
|
export interface IBuildableWherePartial {
|
|
91
96
|
_table: ITableInfo;
|
|
97
|
+
_alias?: string;
|
|
92
98
|
_where?: any[];
|
|
93
99
|
_limit?: number;
|
|
94
100
|
}
|
|
95
101
|
export interface IBuildableValuesPartial {
|
|
96
102
|
_table: ITableInfo;
|
|
103
|
+
_alias?: string;
|
|
97
104
|
_values?: any;
|
|
98
105
|
}
|
|
99
106
|
export interface IBuildableSelectQuery {
|
|
100
107
|
_type: 'SELECT';
|
|
101
108
|
_table: ITableInfo;
|
|
109
|
+
_alias?: string;
|
|
102
110
|
_distinct?: boolean;
|
|
103
111
|
_columns?: IExpression[];
|
|
104
112
|
_joins?: IJoin[];
|
|
@@ -112,6 +120,7 @@ export interface IBuildableSelectQuery {
|
|
|
112
120
|
export interface IBuildableSubSelectQuery {
|
|
113
121
|
_type: 'SELECT';
|
|
114
122
|
_table: ITableInfo;
|
|
123
|
+
_alias?: string;
|
|
115
124
|
_distinct?: boolean;
|
|
116
125
|
_columns?: IExpression[];
|
|
117
126
|
_joins?: IJoin[];
|
|
@@ -127,6 +136,7 @@ export interface IBuildableInsertQuery {
|
|
|
127
136
|
export interface IBuildableUpsertQuery {
|
|
128
137
|
_type: 'UPSERT';
|
|
129
138
|
_table: ITableInfo;
|
|
139
|
+
_alias?: string;
|
|
130
140
|
_values?: any;
|
|
131
141
|
_where?: IExpression[];
|
|
132
142
|
_conflictExp?: {
|
|
@@ -7,6 +7,7 @@ export declare class TestExecutor extends BaseExecutor<TestQuery, TestQueryResul
|
|
|
7
7
|
set mapper(value: Mapper);
|
|
8
8
|
}
|
|
9
9
|
export declare class TestExecutorProvider implements IQueryExecutorProvider<TestQuery> {
|
|
10
|
-
private executor;
|
|
10
|
+
private readonly executor;
|
|
11
|
+
constructor(executor?: IQueryExecutor<TestQuery>);
|
|
11
12
|
getExecutor(): IQueryExecutor<TestQuery>;
|
|
12
13
|
}
|
|
@@ -5,6 +5,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
8
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
15
|
exports.TestExecutorProvider = exports.TestExecutor = void 0;
|
|
10
16
|
const inversify_1 = require("inversify");
|
|
@@ -22,15 +28,17 @@ TestExecutor = __decorate([
|
|
|
22
28
|
], TestExecutor);
|
|
23
29
|
exports.TestExecutor = TestExecutor;
|
|
24
30
|
let TestExecutorProvider = class TestExecutorProvider {
|
|
25
|
-
constructor() {
|
|
26
|
-
this.executor =
|
|
31
|
+
constructor(executor = new TestExecutor()) {
|
|
32
|
+
this.executor = executor;
|
|
27
33
|
}
|
|
28
34
|
getExecutor() {
|
|
29
35
|
return this.executor;
|
|
30
36
|
}
|
|
31
37
|
};
|
|
32
38
|
TestExecutorProvider = __decorate([
|
|
33
|
-
inversify_1.injectable()
|
|
39
|
+
inversify_1.injectable(),
|
|
40
|
+
__param(0, inversify_1.unmanaged()),
|
|
41
|
+
__metadata("design:paramtypes", [Object])
|
|
34
42
|
], TestExecutorProvider);
|
|
35
43
|
exports.TestExecutorProvider = TestExecutorProvider;
|
|
36
44
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/test-driver/executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/test-driver/executor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,yCAAgD;AAChD,kCAAqC;AAGrC,IAAa,YAAY,GAAzB,MAAa,YAAa,SAAQ,mBAAwC;IAC9D,EAAE,CAAC,KAAgB;QAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAID,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CACF,CAAA;AAVY,YAAY;IADxB,sBAAU,EAAE;GACA,YAAY,CAUxB;AAVY,oCAAY;AAazB,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAE/B,YAEmB,WAAsC,IAAI,YAAY,EAAE;QAAxD,aAAQ,GAAR,QAAQ,CAAgD;IAE3E,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AAXY,oBAAoB;IADhC,sBAAU,EAAE;IAIR,WAAA,qBAAS,EAAE,CAAA;;GAHH,oBAAoB,CAWhC;AAXY,oDAAoB"}
|
package/package.json
CHANGED
package/tests/builder.spec.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import {alias, and, asc, Delete, desc, Insert, max, Select, sum, TableMetadataSymbol, Update, Upsert, of} from '../dist';
|
|
2
|
-
import { Employee, Person } from './models';
|
|
2
|
+
import { Employee, Person, Tag } from './models';
|
|
3
3
|
import { TableRef, readModelMeta } from '../dist/builder';
|
|
4
|
+
import {exists} from "../src";
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
const tableInfo = readModelMeta(Person);
|
|
7
8
|
const tableName = tableInfo.tableName;
|
|
8
|
-
const person: InstanceType<typeof Person> = {id: 1, name: 'Name', age: 18, city: 'City'};
|
|
9
|
+
const person: InstanceType<typeof Person> = {id: 1, name: 'Name', age: 18, city: 'City', profiles: ["profile-a"]};
|
|
9
10
|
|
|
10
11
|
describe('Select', () => {
|
|
11
12
|
|
|
@@ -168,6 +169,108 @@ describe('Select', () => {
|
|
|
168
169
|
expect(query._where).toStrictEqual(expectation);
|
|
169
170
|
});
|
|
170
171
|
|
|
172
|
+
describe('Where filter fields', () => {
|
|
173
|
+
it ('simple many to many', () => {
|
|
174
|
+
const query = Select(Person).where(({profiles}) => profiles.has('test'));
|
|
175
|
+
const expectation = [{
|
|
176
|
+
_operands: [
|
|
177
|
+
"test",
|
|
178
|
+
{
|
|
179
|
+
_operator: 'SUBQUERY',
|
|
180
|
+
_operands: [
|
|
181
|
+
{
|
|
182
|
+
_columns: [{_column: { table: "employee", name: "title"}}],
|
|
183
|
+
_table: { fields: null, tableName: "employee"},
|
|
184
|
+
_type: "SELECT",
|
|
185
|
+
_where: [
|
|
186
|
+
{
|
|
187
|
+
_operands: [
|
|
188
|
+
{ _column: { table: "employee", name: "person"}},
|
|
189
|
+
{ _column: { table: tableName, name: "id"}}
|
|
190
|
+
],
|
|
191
|
+
_operator: "="
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
}
|
|
195
|
+
]},
|
|
196
|
+
],
|
|
197
|
+
_operator: "IN",
|
|
198
|
+
}];
|
|
199
|
+
expect(query._where).toStrictEqual(expectation);
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
it ('with builder', () => {
|
|
203
|
+
const query = Select(Person).where(({tags}) => tags.has('tag'));
|
|
204
|
+
const expectation = [{
|
|
205
|
+
_operands: [
|
|
206
|
+
"tag",
|
|
207
|
+
{
|
|
208
|
+
_operator: 'SUBQUERY',
|
|
209
|
+
_operands: [
|
|
210
|
+
{
|
|
211
|
+
_columns: [{_column: { table: "Tag", name: "name", wrapper: undefined}}],
|
|
212
|
+
_table: readModelMeta(Tag),
|
|
213
|
+
_alias: null,
|
|
214
|
+
_type: "SELECT",
|
|
215
|
+
_distinct: false,
|
|
216
|
+
_joins: [
|
|
217
|
+
{
|
|
218
|
+
_alias: undefined,
|
|
219
|
+
_tableName: "TagPerson",
|
|
220
|
+
_type: "INNER",
|
|
221
|
+
_condition: {
|
|
222
|
+
_operands: [
|
|
223
|
+
{
|
|
224
|
+
_operands: [
|
|
225
|
+
{
|
|
226
|
+
_column: {
|
|
227
|
+
name: 'id',
|
|
228
|
+
table: "Tag",
|
|
229
|
+
wrapper: undefined
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
_column: {
|
|
234
|
+
name: 'tag',
|
|
235
|
+
table: "TagPerson",
|
|
236
|
+
wrapper: undefined
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
_operator: '='
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
_operands: [
|
|
244
|
+
{
|
|
245
|
+
_column: {
|
|
246
|
+
name: 'person',
|
|
247
|
+
table: "TagPerson",
|
|
248
|
+
wrapper: undefined
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
_column: {
|
|
253
|
+
name: 'id',
|
|
254
|
+
table: "Person",
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
_operator: '='
|
|
259
|
+
},
|
|
260
|
+
],
|
|
261
|
+
_operator: 'AND'
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
]},
|
|
267
|
+
],
|
|
268
|
+
_operator: "IN",
|
|
269
|
+
}];
|
|
270
|
+
expect(query._where).toStrictEqual(expectation);
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
|
|
171
274
|
it('Having', () => {
|
|
172
275
|
const employeeTableName = readModelMeta(Employee).tableName;
|
|
173
276
|
const salaryRate = 2000;
|
|
@@ -231,6 +334,55 @@ describe('Select', () => {
|
|
|
231
334
|
const query = Select(Person).offset(offset);
|
|
232
335
|
expect(query._offset).toBe(offset);
|
|
233
336
|
});
|
|
337
|
+
|
|
338
|
+
it('subquery on self', () => {
|
|
339
|
+
const query = Select(Person).where(({id}) => exists(Select(alias(Person, 'person_filter')).where(({id: _}) => _.eq(id))));
|
|
340
|
+
|
|
341
|
+
{
|
|
342
|
+
const x = (query as any)._where[0]._operands[0];
|
|
343
|
+
delete x.columns;
|
|
344
|
+
delete x.groupBy;
|
|
345
|
+
delete x.having;
|
|
346
|
+
delete x.join;
|
|
347
|
+
delete x.joinFull;
|
|
348
|
+
delete x.joinLeft;
|
|
349
|
+
delete x.joinRight;
|
|
350
|
+
delete x.limit;
|
|
351
|
+
delete x.offset;
|
|
352
|
+
delete x.orderBy;
|
|
353
|
+
delete x.where;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
const expectation = {
|
|
357
|
+
_where: [{
|
|
358
|
+
"_operands": [{
|
|
359
|
+
"_alias": "person_filter",
|
|
360
|
+
"_distinct": false,
|
|
361
|
+
"_table": Person[TableMetadataSymbol],
|
|
362
|
+
"_type": "SELECT",
|
|
363
|
+
"_where": [{
|
|
364
|
+
"_operands": [{
|
|
365
|
+
"_column": {
|
|
366
|
+
"name": "id",
|
|
367
|
+
"table": "person_filter",
|
|
368
|
+
"wrapper": undefined,
|
|
369
|
+
},
|
|
370
|
+
}, {
|
|
371
|
+
"_column": {
|
|
372
|
+
"name": "id",
|
|
373
|
+
"table": "Person",
|
|
374
|
+
"wrapper": undefined,
|
|
375
|
+
},
|
|
376
|
+
}],
|
|
377
|
+
"_operator": "=",
|
|
378
|
+
}]
|
|
379
|
+
}],
|
|
380
|
+
"_operator": "EXISTS",
|
|
381
|
+
}]
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
expect(query._where).toStrictEqual(expectation._where);
|
|
385
|
+
})
|
|
234
386
|
});
|
|
235
387
|
|
|
236
388
|
describe('Insert', () => {
|
package/tests/models.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { dbField, dbTable, IDbField } from '../
|
|
1
|
+
import { dbField, dbTable, IDbField, dbFilterField, and, Select } from '../src';
|
|
2
2
|
|
|
3
3
|
const UUID: IDbField = {}
|
|
4
4
|
|
|
@@ -18,6 +18,41 @@ export class Person {
|
|
|
18
18
|
@dbField name!: string;
|
|
19
19
|
@dbField age!: number;
|
|
20
20
|
@dbField city!: string;
|
|
21
|
+
|
|
22
|
+
@dbFilterField({
|
|
23
|
+
table: 'employee',
|
|
24
|
+
keyField: 'person',
|
|
25
|
+
valueField: 'title',
|
|
26
|
+
})
|
|
27
|
+
profiles?: string[];
|
|
28
|
+
|
|
29
|
+
@dbFilterField(primary => Select(Tag)
|
|
30
|
+
.columns((x) => [x.name])
|
|
31
|
+
.join(TagPerson, (a ,b) => and(a.id.eq(b.tag), b.person.eq(primary)))
|
|
32
|
+
)
|
|
33
|
+
tags?: string[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@dbTable('Tag')
|
|
37
|
+
export class Tag {
|
|
38
|
+
@dbField({
|
|
39
|
+
primaryKey: true,
|
|
40
|
+
autoIncrement: true
|
|
41
|
+
})
|
|
42
|
+
public id!: number;
|
|
43
|
+
@dbField public name!: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@dbTable('TagPerson')
|
|
47
|
+
export class TagPerson {
|
|
48
|
+
@dbField({
|
|
49
|
+
primaryKey: true,
|
|
50
|
+
})
|
|
51
|
+
public person!: number;
|
|
52
|
+
@dbField({
|
|
53
|
+
primaryKey: true,
|
|
54
|
+
})
|
|
55
|
+
public tag!: number;
|
|
21
56
|
}
|
|
22
57
|
|
|
23
58
|
@dbTable('Employee')
|
package/tests/reader.spec.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { reader, IQueryData, dbTable, IDbField, dbField, DbValueType } from '../dist';
|
|
2
2
|
import { Person } from './models';
|
|
3
|
-
import { Container } from 'inversify';
|
|
4
3
|
|
|
5
4
|
const DB_JSON: IDbField = {
|
|
6
5
|
reader(raw: DbValueType): any {
|
|
@@ -20,6 +19,7 @@ function generatePersons(quantity: number): IQueryData[] {
|
|
|
20
19
|
person['age'] = 18;
|
|
21
20
|
person['name'] = `TestName${i}`;
|
|
22
21
|
person['uid'] = `uid${i}`;
|
|
22
|
+
// person['profiles'] = ['profile-a'];
|
|
23
23
|
res.push(person);
|
|
24
24
|
}
|
|
25
25
|
return res;
|
|
@@ -28,10 +28,6 @@ function generatePersons(quantity: number): IQueryData[] {
|
|
|
28
28
|
describe('DbReader', () => {
|
|
29
29
|
|
|
30
30
|
const persons = generatePersons(5);
|
|
31
|
-
let container: Container;
|
|
32
|
-
beforeEach(() => {
|
|
33
|
-
container = new Container();
|
|
34
|
-
});
|
|
35
31
|
|
|
36
32
|
it('read raw', () => {
|
|
37
33
|
const result = reader(persons);
|
|
@@ -70,15 +66,43 @@ describe('DbReader', () => {
|
|
|
70
66
|
expect(result).toEqual(expected);
|
|
71
67
|
});
|
|
72
68
|
|
|
69
|
+
it('read Model from no data', () => {
|
|
70
|
+
@dbTable
|
|
71
|
+
class Model {
|
|
72
|
+
@dbField public readonly id!: number;
|
|
73
|
+
@dbField('raw') public readonly value!: string;
|
|
74
|
+
@dbField({kind: DB_JSON, model: [Person]}) public readonly personal!: Person[];
|
|
75
|
+
|
|
76
|
+
constructor(id, raw, personal) {
|
|
77
|
+
this.id = id;
|
|
78
|
+
this.value = raw;
|
|
79
|
+
this.personal = personal
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const results = reader([], Model);
|
|
84
|
+
expect(results.length).toBe(0);
|
|
85
|
+
});
|
|
86
|
+
|
|
73
87
|
it('read scalar', () => {
|
|
74
88
|
const count = 10;
|
|
89
|
+
const correctResult = reader([{field: count}], true);
|
|
90
|
+
expect(correctResult).toBe(count);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it('read scalar from no data', () => {
|
|
75
94
|
const fieldValue = 'string';
|
|
76
95
|
const emptyData = reader([], true);
|
|
77
|
-
const correctResult = reader([{field: count}], true);
|
|
78
96
|
expect(emptyData).toBe(0);
|
|
79
|
-
expect(correctResult).toBe(count);
|
|
80
97
|
expect(() => {
|
|
81
98
|
reader([{field: fieldValue as any}], true)
|
|
82
|
-
}).toThrowError(`Can
|
|
99
|
+
}).toThrowError(`Can't read count value from db. Invalid Count ${fieldValue}`);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('read scalar from invalid data', () => {
|
|
103
|
+
const fieldValue = 'string';
|
|
104
|
+
expect(() => {
|
|
105
|
+
reader([{field: fieldValue as any}], true)
|
|
106
|
+
}).toThrowError(`Can't read count value from db. Invalid Count ${fieldValue}`);
|
|
83
107
|
});
|
|
84
108
|
});
|