@spinajs/orm 1.2.47 → 1.2.57
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/builders.d.ts +8 -0
- package/lib/builders.js +25 -1
- package/lib/builders.js.map +1 -1
- package/lib/interfaces.d.ts +3 -0
- package/lib/interfaces.js +7 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/orm.js +2 -3
- package/lib/orm.js.map +1 -1
- package/package.json +5 -5
- package/lib/helpers.d.ts +0 -1
- package/lib/helpers.js +0 -14
- package/lib/helpers.js.map +0 -1
- package/lib/log-common/src/index.d.ts +0 -180
- package/lib/log-common/src/index.js +0 -49
- package/lib/log-common/src/index.js.map +0 -1
- package/lib/orm/src/builders.d.ts +0 -429
- package/lib/orm/src/builders.js +0 -1082
- package/lib/orm/src/builders.js.map +0 -1
- package/lib/orm/src/cli.d.ts +0 -1
- package/lib/orm/src/cli.js +0 -2
- package/lib/orm/src/cli.js.map +0 -1
- package/lib/orm/src/converters.d.ts +0 -9
- package/lib/orm/src/converters.js +0 -22
- package/lib/orm/src/converters.js.map +0 -1
- package/lib/orm/src/decorators.d.ts +0 -122
- package/lib/orm/src/decorators.js +0 -380
- package/lib/orm/src/decorators.js.map +0 -1
- package/lib/orm/src/driver.d.ts +0 -77
- package/lib/orm/src/driver.js +0 -84
- package/lib/orm/src/driver.js.map +0 -1
- package/lib/orm/src/enums.d.ts +0 -111
- package/lib/orm/src/enums.js +0 -122
- package/lib/orm/src/enums.js.map +0 -1
- package/lib/orm/src/exceptions.d.ts +0 -6
- package/lib/orm/src/exceptions.js +0 -11
- package/lib/orm/src/exceptions.js.map +0 -1
- package/lib/orm/src/hydrators.d.ts +0 -16
- package/lib/orm/src/hydrators.js +0 -70
- package/lib/orm/src/hydrators.js.map +0 -1
- package/lib/orm/src/index.d.ts +0 -12
- package/lib/orm/src/index.js +0 -25
- package/lib/orm/src/index.js.map +0 -1
- package/lib/orm/src/interfaces.d.ts +0 -615
- package/lib/orm/src/interfaces.js +0 -186
- package/lib/orm/src/interfaces.js.map +0 -1
- package/lib/orm/src/model.d.ts +0 -135
- package/lib/orm/src/model.js +0 -449
- package/lib/orm/src/model.js.map +0 -1
- package/lib/orm/src/orm.d.ts +0 -59
- package/lib/orm/src/orm.js +0 -278
- package/lib/orm/src/orm.js.map +0 -1
- package/lib/orm/src/relations.d.ts +0 -96
- package/lib/orm/src/relations.js +0 -503
- package/lib/orm/src/relations.js.map +0 -1
- package/lib/orm/src/statements.d.ts +0 -132
- package/lib/orm/src/statements.js +0 -257
- package/lib/orm/src/statements.js.map +0 -1
- package/lib/orm/src/types.d.ts +0 -2
- package/lib/orm/src/types.js +0 -3
- package/lib/orm/src/types.js.map +0 -1
- package/lib/orm/src/wrappers.d.ts +0 -5
- package/lib/orm/src/wrappers.js +0 -13
- package/lib/orm/src/wrappers.js.map +0 -1
package/lib/orm/src/relations.js
DELETED
|
@@ -1,503 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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 OneToManyRelation_1;
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.OneToManyRelationList = exports.ManyToManyRelationList = exports.Relation = exports.ManyToManyRelation = exports.OneToManyRelation = exports.BelongsToRecursiveRelation = exports.BelongsToRelation = exports.DiscriminationMapMiddleware = exports.OrmRelation = void 0;
|
|
14
|
-
/* eslint-disable prettier/prettier */
|
|
15
|
-
const exceptions_1 = require("@spinajs/exceptions");
|
|
16
|
-
const interfaces_1 = require("./interfaces");
|
|
17
|
-
const di_1 = require("@spinajs/di");
|
|
18
|
-
const builders_1 = require("./builders");
|
|
19
|
-
const model_1 = require("./model");
|
|
20
|
-
const orm_1 = require("./orm");
|
|
21
|
-
const _ = require("lodash");
|
|
22
|
-
class OrmRelation {
|
|
23
|
-
constructor(_orm, _query, _description, parentRelation) {
|
|
24
|
-
var _a;
|
|
25
|
-
this._orm = _orm;
|
|
26
|
-
this._query = _query;
|
|
27
|
-
this._description = _description;
|
|
28
|
-
this.parentRelation = parentRelation;
|
|
29
|
-
this._targetModel = (_a = this._description.TargetModel) !== null && _a !== void 0 ? _a : undefined;
|
|
30
|
-
this._targetModelDescriptor = (0, model_1.extractModelDescriptor)(this._targetModel);
|
|
31
|
-
const driver = this._orm.Connections.get(this._targetModelDescriptor.Connection);
|
|
32
|
-
const cnt = driver.Container;
|
|
33
|
-
this._relationQuery = cnt.resolve(builders_1.SelectQueryBuilder, [driver, this._targetModel, this]);
|
|
34
|
-
if (driver.Options.Database) {
|
|
35
|
-
this._relationQuery.schema(driver.Options.Database);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
get Alias() {
|
|
39
|
-
return this.parentRelation ? `${this.parentRelation.Alias}.$${this._description.Name}$` : `$${this._description.Name}$`;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.OrmRelation = OrmRelation;
|
|
43
|
-
class HasManyRelationMiddleware {
|
|
44
|
-
constructor(_relationQuery, _description, _path) {
|
|
45
|
-
this._relationQuery = _relationQuery;
|
|
46
|
-
this._description = _description;
|
|
47
|
-
this._path = _path;
|
|
48
|
-
}
|
|
49
|
-
afterData(data) {
|
|
50
|
-
return data;
|
|
51
|
-
}
|
|
52
|
-
modelCreation(_) {
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
async afterHydration(data) {
|
|
56
|
-
const self = this;
|
|
57
|
-
const pks = data.map((d) => {
|
|
58
|
-
if (this._path) {
|
|
59
|
-
return _.get(d, this._path)[this._description.PrimaryKey];
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
return d[this._description.PrimaryKey];
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
const hydrateMiddleware = {
|
|
66
|
-
afterData(data) {
|
|
67
|
-
return data;
|
|
68
|
-
},
|
|
69
|
-
modelCreation() {
|
|
70
|
-
return null;
|
|
71
|
-
},
|
|
72
|
-
async afterHydration(relationData) {
|
|
73
|
-
data.forEach((d) => {
|
|
74
|
-
const relData = relationData.filter((rd) => {
|
|
75
|
-
if (self._path) {
|
|
76
|
-
return _.get(d, self._path)[self._description.PrimaryKey] === rd[self._description.ForeignKey];
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
return rd[self._description.ForeignKey] === d[self._description.PrimaryKey];
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
if (self._path) {
|
|
83
|
-
_.get(d, self._path)[self._description.Name] = new OneToManyRelationList(d, self._description.TargetModel, self._description, relData);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
d[self._description.Name] = new OneToManyRelationList(d, self._description.TargetModel, self._description, relData);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
if (pks.length !== 0) {
|
|
92
|
-
this._relationQuery.whereIn(this._description.ForeignKey, pks);
|
|
93
|
-
this._relationQuery.middleware(hydrateMiddleware);
|
|
94
|
-
return await this._relationQuery;
|
|
95
|
-
}
|
|
96
|
-
return [];
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
class BelongsToRelationRecursiveMiddleware {
|
|
100
|
-
constructor(_relationQuery, _description, _targetModelDescriptor) {
|
|
101
|
-
this._relationQuery = _relationQuery;
|
|
102
|
-
this._description = _description;
|
|
103
|
-
this._targetModelDescriptor = _targetModelDescriptor;
|
|
104
|
-
}
|
|
105
|
-
afterData(data) {
|
|
106
|
-
return data;
|
|
107
|
-
}
|
|
108
|
-
modelCreation(_) {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
async afterHydration(data) {
|
|
112
|
-
const self = this;
|
|
113
|
-
const pks = data.map((d) => d[this._description.PrimaryKey]);
|
|
114
|
-
const hydrateMiddleware = {
|
|
115
|
-
afterData(data) {
|
|
116
|
-
return data;
|
|
117
|
-
},
|
|
118
|
-
modelCreation(_) {
|
|
119
|
-
return null;
|
|
120
|
-
},
|
|
121
|
-
async afterHydration(relationData) {
|
|
122
|
-
const roots = relationData.filter((rd) => rd[self._description.ForeignKey] === 0 || rd[self._description.ForeignKey] === null);
|
|
123
|
-
const leafs = roots.map((r) => {
|
|
124
|
-
return fillRecursive(r);
|
|
125
|
-
function fillRecursive(parent) {
|
|
126
|
-
const child = relationData.find((rd) => rd[self._description.ForeignKey] === parent[self._description.PrimaryKey]);
|
|
127
|
-
if (!child) {
|
|
128
|
-
return parent;
|
|
129
|
-
}
|
|
130
|
-
child[self._description.Name] = parent;
|
|
131
|
-
return fillRecursive(child);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
data.forEach((d) => {
|
|
135
|
-
d[self._description.Name] = leafs.find((l) => l[self._description.PrimaryKey] === d[self._description.PrimaryKey])[self._description.Name];
|
|
136
|
-
});
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
this._relationQuery.whereIn(this._description.PrimaryKey, pks);
|
|
140
|
-
this._relationQuery.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
141
|
-
this._relationQuery.middleware(hydrateMiddleware);
|
|
142
|
-
return await this._relationQuery;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
class HasManyToManyRelationMiddleware {
|
|
146
|
-
constructor(_relationQuery, _description, _targetModelDescriptor) {
|
|
147
|
-
this._relationQuery = _relationQuery;
|
|
148
|
-
this._description = _description;
|
|
149
|
-
this._targetModelDescriptor = _targetModelDescriptor;
|
|
150
|
-
}
|
|
151
|
-
afterData(data) {
|
|
152
|
-
return data;
|
|
153
|
-
}
|
|
154
|
-
modelCreation(_) {
|
|
155
|
-
return null;
|
|
156
|
-
}
|
|
157
|
-
async afterHydration(data) {
|
|
158
|
-
const self = this;
|
|
159
|
-
const pks = data.map((d) => d[this._description.PrimaryKey]);
|
|
160
|
-
const hydrateMiddleware = {
|
|
161
|
-
afterData(data) {
|
|
162
|
-
return data.map((d) => Object.assign({}, d[self._description.Name], { JunctionModel: self.pickProps(d, [self._description.Name]) }));
|
|
163
|
-
},
|
|
164
|
-
modelCreation(_) {
|
|
165
|
-
return null;
|
|
166
|
-
},
|
|
167
|
-
async afterHydration(relationData) {
|
|
168
|
-
data.forEach((d) => {
|
|
169
|
-
const relData = relationData.filter((rd) => rd.JunctionModel[self._description.ForeignKey] === d[self._description.PrimaryKey]);
|
|
170
|
-
d[self._description.Name] = new OneToManyRelationList(d, self._description.TargetModel, self._description, relData);
|
|
171
|
-
});
|
|
172
|
-
relationData.forEach((d) => delete d.JunctionModel);
|
|
173
|
-
},
|
|
174
|
-
};
|
|
175
|
-
if (pks.length !== 0) {
|
|
176
|
-
this._relationQuery.whereIn(this._description.ForeignKey, pks);
|
|
177
|
-
this._relationQuery.middleware(new BelongsToRelationResultTransformMiddleware());
|
|
178
|
-
this._relationQuery.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
179
|
-
this._relationQuery.middleware(hydrateMiddleware);
|
|
180
|
-
return await this._relationQuery;
|
|
181
|
-
}
|
|
182
|
-
return [];
|
|
183
|
-
}
|
|
184
|
-
pickProps(source, except) {
|
|
185
|
-
const obj = {};
|
|
186
|
-
for (const p in source) {
|
|
187
|
-
if (except.indexOf(p) === -1) {
|
|
188
|
-
obj[p] = source[p];
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return obj;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
class BelongsToRelationResultTransformMiddleware {
|
|
195
|
-
afterData(data) {
|
|
196
|
-
return data.map((d) => {
|
|
197
|
-
const transformedData = Object.assign(d);
|
|
198
|
-
for (const key in transformedData) {
|
|
199
|
-
if (key.startsWith('$')) {
|
|
200
|
-
this.setDeep(transformedData, this.keyTransform(key), d[key]);
|
|
201
|
-
delete transformedData[key];
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
return transformedData;
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
modelCreation(_) {
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
// tslint:disable-next-line: no-empty
|
|
211
|
-
async afterHydration(_data) { }
|
|
212
|
-
/**
|
|
213
|
-
* Dynamically sets a deeply nested value in an object.
|
|
214
|
-
* Optionally "bores" a path to it if its undefined.
|
|
215
|
-
*
|
|
216
|
-
* @param obj - The object which contains the value you want to change/set.
|
|
217
|
-
* @param path - The array representation of path to the value you want to change/set.
|
|
218
|
-
* @param value - The value you want to set it to.
|
|
219
|
-
* @param setrecursively - If true, will set value of non-existing path as well.
|
|
220
|
-
*/
|
|
221
|
-
setDeep(obj, path, value, setrecursively = true) {
|
|
222
|
-
path.reduce((a, b, level) => {
|
|
223
|
-
if (setrecursively && typeof a[b] === 'undefined' && level !== path.length - 1) {
|
|
224
|
-
a[b] = {};
|
|
225
|
-
return a[b];
|
|
226
|
-
}
|
|
227
|
-
if (level === path.length - 1) {
|
|
228
|
-
a[b] = value;
|
|
229
|
-
return value;
|
|
230
|
-
}
|
|
231
|
-
return a[b];
|
|
232
|
-
}, obj);
|
|
233
|
-
}
|
|
234
|
-
keyTransform(key) {
|
|
235
|
-
return key.replace(/\$+/g, '').split('.');
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
class BelongsToRelationResultTransformOneToManyMiddleware extends BelongsToRelationResultTransformMiddleware {
|
|
239
|
-
keyTransform(key) {
|
|
240
|
-
return key.replace(/\$+/g, '').split('.');
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
class DiscriminationMapMiddleware {
|
|
244
|
-
constructor(_description) {
|
|
245
|
-
this._description = _description;
|
|
246
|
-
}
|
|
247
|
-
afterData(data) {
|
|
248
|
-
return data;
|
|
249
|
-
}
|
|
250
|
-
modelCreation(data) {
|
|
251
|
-
if (this._description.DiscriminationMap && this._description.DiscriminationMap.Field) {
|
|
252
|
-
const distValue = data[this._description.DiscriminationMap.Field];
|
|
253
|
-
if (distValue && this._description.DiscriminationMap.Models.has(distValue)) {
|
|
254
|
-
const result = new (this._description.DiscriminationMap.Models.get(distValue))();
|
|
255
|
-
result.hydrate(data);
|
|
256
|
-
return result;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
return null;
|
|
260
|
-
}
|
|
261
|
-
// tslint:disable-next-line: no-empty
|
|
262
|
-
async afterHydration(_data) { }
|
|
263
|
-
}
|
|
264
|
-
exports.DiscriminationMapMiddleware = DiscriminationMapMiddleware;
|
|
265
|
-
let BelongsToRelation = class BelongsToRelation extends OrmRelation {
|
|
266
|
-
constructor(_orm, _query, _description, _parentRelation) {
|
|
267
|
-
super(_orm, _query, _description, _parentRelation);
|
|
268
|
-
this._relationQuery.from(this._targetModelDescriptor.TableName, this.Alias);
|
|
269
|
-
this._targetModelDescriptor.Columns.forEach((c) => {
|
|
270
|
-
this._relationQuery.select(c.Name, `${this.Alias}.${c.Name}`);
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
execute(callback) {
|
|
274
|
-
if (!this.parentRelation && !this._query.TableAlias) {
|
|
275
|
-
this._query.setAlias(`$${this._description.SourceModel.name}$`);
|
|
276
|
-
}
|
|
277
|
-
this._query.leftJoin(this._targetModelDescriptor.TableName, this.Alias, this._description.ForeignKey, `${this._description.PrimaryKey}`);
|
|
278
|
-
if (callback) {
|
|
279
|
-
callback.call(this._relationQuery, [this]);
|
|
280
|
-
}
|
|
281
|
-
this._query.mergeStatements(this._relationQuery);
|
|
282
|
-
if (!this.parentRelation) {
|
|
283
|
-
// if we are on top of the belongsTo relation stack
|
|
284
|
-
// add transform middleware
|
|
285
|
-
// we do this becouse belongsTo modifies query (not creating new like oneToMany and manyToMany)
|
|
286
|
-
// and we only need to run transform once
|
|
287
|
-
this._query.middleware(new BelongsToRelationResultTransformMiddleware());
|
|
288
|
-
}
|
|
289
|
-
else if (!this.parentRelation.parentRelation && this.parentRelation instanceof OneToManyRelation) {
|
|
290
|
-
// if we called populate from OneToMany relation
|
|
291
|
-
// we must use different path transform ( couse onetomany is separate query)
|
|
292
|
-
// otherwise we would fill invalid property on entity
|
|
293
|
-
this._query.middleware(new BelongsToRelationResultTransformOneToManyMiddleware());
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
};
|
|
297
|
-
BelongsToRelation = __decorate([
|
|
298
|
-
(0, di_1.NewInstance)(),
|
|
299
|
-
__metadata("design:paramtypes", [orm_1.Orm, builders_1.SelectQueryBuilder, Object, OrmRelation])
|
|
300
|
-
], BelongsToRelation);
|
|
301
|
-
exports.BelongsToRelation = BelongsToRelation;
|
|
302
|
-
let BelongsToRecursiveRelation = class BelongsToRecursiveRelation extends OrmRelation {
|
|
303
|
-
constructor(_orm, _query, _description, _parentRelation) {
|
|
304
|
-
super(_orm, _query, _description, _parentRelation);
|
|
305
|
-
this._relationQuery.withRecursive(this._description.ForeignKey, this._description.PrimaryKey).from(this._targetModelDescriptor.TableName, this.Alias);
|
|
306
|
-
this._targetModelDescriptor.Columns.forEach((c) => {
|
|
307
|
-
this._relationQuery.select(c.Name, `${this.Alias}.${c.Name}`);
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
execute(callback) {
|
|
311
|
-
if (callback) {
|
|
312
|
-
callback.call(this._relationQuery, [this]);
|
|
313
|
-
}
|
|
314
|
-
this._query.middleware(new BelongsToRelationRecursiveMiddleware(this._relationQuery, this._description, this._targetModelDescriptor));
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
BelongsToRecursiveRelation = __decorate([
|
|
318
|
-
(0, di_1.NewInstance)(),
|
|
319
|
-
__metadata("design:paramtypes", [orm_1.Orm, builders_1.SelectQueryBuilder, Object, OrmRelation])
|
|
320
|
-
], BelongsToRecursiveRelation);
|
|
321
|
-
exports.BelongsToRecursiveRelation = BelongsToRecursiveRelation;
|
|
322
|
-
let OneToManyRelation = OneToManyRelation_1 = class OneToManyRelation extends OrmRelation {
|
|
323
|
-
constructor(_orm, _query, _description, _parentRelation) {
|
|
324
|
-
super(_orm, _query, _description, _parentRelation);
|
|
325
|
-
this._relationQuery.from(this._targetModelDescriptor.TableName, this.Alias);
|
|
326
|
-
this._relationQuery.columns(this._targetModelDescriptor.Columns.map((c) => {
|
|
327
|
-
return c.Name;
|
|
328
|
-
}));
|
|
329
|
-
}
|
|
330
|
-
execute(callback) {
|
|
331
|
-
if (!this.parentRelation && !this._query.TableAlias) {
|
|
332
|
-
this._query.setAlias(`$${this._description.SourceModel.name}$`);
|
|
333
|
-
}
|
|
334
|
-
const path = [];
|
|
335
|
-
let cur = this.parentRelation;
|
|
336
|
-
while (cur && !(cur instanceof OneToManyRelation_1)) {
|
|
337
|
-
path.push(cur._description.Name);
|
|
338
|
-
cur = cur.parentRelation;
|
|
339
|
-
}
|
|
340
|
-
if (callback) {
|
|
341
|
-
callback.call(this._relationQuery, [this]);
|
|
342
|
-
}
|
|
343
|
-
this._query.middleware(new DiscriminationMapMiddleware(this._targetModelDescriptor));
|
|
344
|
-
this._query.middleware(new HasManyRelationMiddleware(this._relationQuery, this._description, path.join('.')));
|
|
345
|
-
}
|
|
346
|
-
};
|
|
347
|
-
OneToManyRelation = OneToManyRelation_1 = __decorate([
|
|
348
|
-
(0, di_1.NewInstance)(),
|
|
349
|
-
__metadata("design:paramtypes", [orm_1.Orm, builders_1.SelectQueryBuilder, Object, OrmRelation])
|
|
350
|
-
], OneToManyRelation);
|
|
351
|
-
exports.OneToManyRelation = OneToManyRelation;
|
|
352
|
-
let ManyToManyRelation = class ManyToManyRelation extends OrmRelation {
|
|
353
|
-
constructor(_orm, _query, _description, _parentRelation) {
|
|
354
|
-
var _a, _b;
|
|
355
|
-
super(_orm, _query, _description, _parentRelation);
|
|
356
|
-
this._joinModel = (_b = (_a = this._orm.Models.find((m) => { var _a; return m.name === ((_a = this._description.JunctionModel) === null || _a === void 0 ? void 0 : _a.name); })) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : undefined;
|
|
357
|
-
if (this._joinModel === undefined) {
|
|
358
|
-
throw new exceptions_1.InvalidOperation(`model ${this._description.JunctionModel} not exists in orm module`);
|
|
359
|
-
}
|
|
360
|
-
this._joinModelDescriptor = (0, model_1.extractModelDescriptor)(this._joinModel);
|
|
361
|
-
const orm = di_1.DI.get(orm_1.Orm);
|
|
362
|
-
const driver = orm.Connections.get(this._targetModelDescriptor.Connection);
|
|
363
|
-
const cnt = driver.Container;
|
|
364
|
-
this._joinQuery = cnt.resolve(builders_1.SelectQueryBuilder, [driver, this._targetModel, this]);
|
|
365
|
-
if (driver.Options.Database) {
|
|
366
|
-
this._joinQuery.schema(driver.Options.Database);
|
|
367
|
-
}
|
|
368
|
-
this._joinQuery.from(this._joinModelDescriptor.TableName, `$${this._joinModelDescriptor.TableName}$`);
|
|
369
|
-
this._joinQuery.columns(this._joinModelDescriptor.Columns.map((c) => {
|
|
370
|
-
return c.Name;
|
|
371
|
-
}));
|
|
372
|
-
this._relationQuery.from(this._targetModelDescriptor.TableName, this.Alias);
|
|
373
|
-
this._targetModelDescriptor.Columns.forEach((c) => {
|
|
374
|
-
this._relationQuery.select(c.Name, `${this.Alias}.${c.Name}`);
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
get TableJoinQuery() {
|
|
378
|
-
return this._joinQuery;
|
|
379
|
-
}
|
|
380
|
-
get RelationQuery() {
|
|
381
|
-
return this._relationQuery;
|
|
382
|
-
}
|
|
383
|
-
execute(callback) {
|
|
384
|
-
this._joinQuery.leftJoin(this._targetModelDescriptor.TableName, this.Alias, this._description.JunctionModelTargetModelFKey_Name, this._description.ForeignKey);
|
|
385
|
-
if (callback) {
|
|
386
|
-
callback.call(this._relationQuery, [this]);
|
|
387
|
-
}
|
|
388
|
-
const joinRelationDescriptor = {
|
|
389
|
-
Name: this._description.Name,
|
|
390
|
-
Type: interfaces_1.RelationType.Many,
|
|
391
|
-
TargetModel: this._description.JunctionModel,
|
|
392
|
-
SourceModel: this._description.SourceModel,
|
|
393
|
-
ForeignKey: this._description.JunctionModelSourceModelFKey_Name,
|
|
394
|
-
PrimaryKey: this._description.PrimaryKey,
|
|
395
|
-
Recursive: false,
|
|
396
|
-
};
|
|
397
|
-
this._joinQuery.mergeStatements(this._relationQuery);
|
|
398
|
-
this._query.middleware(new HasManyToManyRelationMiddleware(this._joinQuery, joinRelationDescriptor, this._targetModelDescriptor));
|
|
399
|
-
}
|
|
400
|
-
};
|
|
401
|
-
ManyToManyRelation = __decorate([
|
|
402
|
-
(0, di_1.NewInstance)(),
|
|
403
|
-
__metadata("design:paramtypes", [orm_1.Orm, builders_1.SelectQueryBuilder, Object, OrmRelation])
|
|
404
|
-
], ManyToManyRelation);
|
|
405
|
-
exports.ManyToManyRelation = ManyToManyRelation;
|
|
406
|
-
/**
|
|
407
|
-
* Iterable list of populated relation entities
|
|
408
|
-
*
|
|
409
|
-
* It allows to add / remove objects to relation
|
|
410
|
-
*/
|
|
411
|
-
class Relation extends Array {
|
|
412
|
-
constructor(owner, model, Relation, objects) {
|
|
413
|
-
super();
|
|
414
|
-
this.owner = owner;
|
|
415
|
-
this.model = model;
|
|
416
|
-
this.Relation = Relation;
|
|
417
|
-
if (objects) {
|
|
418
|
-
this.push(...objects);
|
|
419
|
-
}
|
|
420
|
-
this.TargetModelDescriptor = (0, model_1.extractModelDescriptor)(model);
|
|
421
|
-
this.Orm = di_1.DI.get(orm_1.Orm);
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Delete all objects from relation
|
|
425
|
-
*/
|
|
426
|
-
async clear() {
|
|
427
|
-
await this.remove(this);
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Populates this relation
|
|
431
|
-
*/
|
|
432
|
-
async populate(callback) {
|
|
433
|
-
/**
|
|
434
|
-
* Do little cheat - we construct query that loads initial model with given relation.
|
|
435
|
-
* Then we only assign relation property.
|
|
436
|
-
*
|
|
437
|
-
* TODO: create only relation query without loading its owner.
|
|
438
|
-
*/
|
|
439
|
-
const result = await this.owner.constructor.where(this.owner.PrimaryKeyName, this.owner.PrimaryKeyValue).populate(this.Relation.Name, callback).firstOrFail();
|
|
440
|
-
if (result) {
|
|
441
|
-
this.splice(0, this.length);
|
|
442
|
-
this.push(...result[this.Relation.Name]);
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
exports.Relation = Relation;
|
|
447
|
-
class ManyToManyRelationList extends Relation {
|
|
448
|
-
async remove(obj) {
|
|
449
|
-
const self = this;
|
|
450
|
-
const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
|
|
451
|
-
const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
|
|
452
|
-
const jmodelDescriptor = (0, model_1.extractModelDescriptor)(this.Relation.JunctionModel);
|
|
453
|
-
if (!driver) {
|
|
454
|
-
throw new exceptions_1.InvalidArgument(`connection ${this.TargetModelDescriptor.Connection} not exists`);
|
|
455
|
-
}
|
|
456
|
-
const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.JunctionModel])
|
|
457
|
-
.from(jmodelDescriptor.TableName)
|
|
458
|
-
.where(function () {
|
|
459
|
-
this.whereIn(self.Relation.JunctionModelTargetModelFKey_Name, data);
|
|
460
|
-
this.andWhere(self.Relation.JunctionModelSourceModelFKey_Name, self.owner.PrimaryKeyValue);
|
|
461
|
-
});
|
|
462
|
-
await query;
|
|
463
|
-
_.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
|
|
464
|
-
}
|
|
465
|
-
async add(obj, mode) {
|
|
466
|
-
const data = Array.isArray(obj) ? obj : [obj];
|
|
467
|
-
const relEntities = data.map((d) => {
|
|
468
|
-
const relEntity = new this.Relation.JunctionModel();
|
|
469
|
-
relEntity[this.Relation.JunctionModelSourceModelFKey_Name] = this.owner.PrimaryKeyValue;
|
|
470
|
-
relEntity[this.Relation.JunctionModelTargetModelFKey_Name] = d.PrimaryKeyValue;
|
|
471
|
-
return relEntity;
|
|
472
|
-
});
|
|
473
|
-
for (const m of relEntities) {
|
|
474
|
-
await m.insert(mode);
|
|
475
|
-
}
|
|
476
|
-
this.push(...data);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
exports.ManyToManyRelationList = ManyToManyRelationList;
|
|
480
|
-
class OneToManyRelationList extends Relation {
|
|
481
|
-
async remove(obj) {
|
|
482
|
-
const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
|
|
483
|
-
const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
|
|
484
|
-
if (!driver) {
|
|
485
|
-
throw new exceptions_1.InvalidArgument(`connection ${this.TargetModelDescriptor.Connection} not exists`);
|
|
486
|
-
}
|
|
487
|
-
const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.TargetModel]).whereIn(this.Relation.ForeignKey, data);
|
|
488
|
-
await query;
|
|
489
|
-
_.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
|
|
490
|
-
}
|
|
491
|
-
async add(obj, mode) {
|
|
492
|
-
const data = Array.isArray(obj) ? obj : [obj];
|
|
493
|
-
data.forEach((d) => {
|
|
494
|
-
d[this.Relation.ForeignKey] = this.owner.PrimaryKeyValue;
|
|
495
|
-
});
|
|
496
|
-
for (const m of data) {
|
|
497
|
-
await m.insert(mode);
|
|
498
|
-
}
|
|
499
|
-
this.push(...data);
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
exports.OneToManyRelationList = OneToManyRelationList;
|
|
503
|
-
//# sourceMappingURL=relations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"relations.js","sourceRoot":"","sources":["../../../src/relations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { SelectQueryBuilder, WhereBuilder, RawQuery } from './builders';
|
|
2
|
-
import { ColumnMethods, WhereOperators, JoinMethod } from './enums';
|
|
3
|
-
import { Container, Class } from '@spinajs/di';
|
|
4
|
-
import { IColumnDescriptor } from './interfaces';
|
|
5
|
-
export interface IQueryStatementResult {
|
|
6
|
-
Statements: string[];
|
|
7
|
-
Bindings: any[];
|
|
8
|
-
}
|
|
9
|
-
export interface IQueryStatement {
|
|
10
|
-
TableAlias: string;
|
|
11
|
-
build(): IQueryStatementResult;
|
|
12
|
-
}
|
|
13
|
-
export declare abstract class QueryStatement implements IQueryStatement {
|
|
14
|
-
protected _tableAlias: string;
|
|
15
|
-
get TableAlias(): string;
|
|
16
|
-
set TableAlias(alias: string);
|
|
17
|
-
constructor(tableAlias?: string);
|
|
18
|
-
abstract build(): IQueryStatementResult;
|
|
19
|
-
}
|
|
20
|
-
export declare abstract class RawQueryStatement extends QueryStatement {
|
|
21
|
-
protected _query: string;
|
|
22
|
-
protected _bindings: any[];
|
|
23
|
-
constructor(query: string, bindings?: any[]);
|
|
24
|
-
abstract build(): IQueryStatementResult;
|
|
25
|
-
}
|
|
26
|
-
export declare abstract class WithRecursiveStatement extends QueryStatement {
|
|
27
|
-
protected _name: string;
|
|
28
|
-
protected _query: SelectQueryBuilder;
|
|
29
|
-
protected _rcKeyName: string;
|
|
30
|
-
protected _pkName: string;
|
|
31
|
-
constructor(_name: string, _query: SelectQueryBuilder, _rcKeyName: string, _pkName: string);
|
|
32
|
-
abstract build(): IQueryStatementResult;
|
|
33
|
-
}
|
|
34
|
-
export declare abstract class GroupByStatement extends QueryStatement {
|
|
35
|
-
protected _expr: string | RawQuery;
|
|
36
|
-
constructor(expression: string | RawQuery, tableAlias: string);
|
|
37
|
-
abstract build(): IQueryStatementResult;
|
|
38
|
-
}
|
|
39
|
-
export declare abstract class BetweenStatement extends QueryStatement {
|
|
40
|
-
protected _val: any[];
|
|
41
|
-
protected _not: boolean;
|
|
42
|
-
protected _column: string;
|
|
43
|
-
constructor(column: string, val: any[], not: boolean, tableAlias: string);
|
|
44
|
-
abstract build(): IQueryStatementResult;
|
|
45
|
-
}
|
|
46
|
-
export declare abstract class WhereQueryStatement extends QueryStatement {
|
|
47
|
-
protected _builder: WhereBuilder;
|
|
48
|
-
constructor(builder: WhereBuilder, tableAlias: string);
|
|
49
|
-
abstract build(): IQueryStatementResult;
|
|
50
|
-
}
|
|
51
|
-
export declare abstract class WhereStatement extends QueryStatement {
|
|
52
|
-
protected _column: string | Wrap;
|
|
53
|
-
protected _operator: WhereOperators;
|
|
54
|
-
protected _value: any;
|
|
55
|
-
protected _container: Container;
|
|
56
|
-
constructor(column: string, operator: WhereOperators, value: any, tableAlias: string, container: Container);
|
|
57
|
-
abstract build(): IQueryStatementResult;
|
|
58
|
-
}
|
|
59
|
-
export declare class Wrap {
|
|
60
|
-
Column: string;
|
|
61
|
-
Wrapper: Class<WrapStatement>;
|
|
62
|
-
constructor(column: string, wrapper: Class<WrapStatement>);
|
|
63
|
-
}
|
|
64
|
-
export declare abstract class WrapStatement {
|
|
65
|
-
protected _value: any;
|
|
66
|
-
protected _tableAlias: string;
|
|
67
|
-
constructor(value: any, tableAlias: string);
|
|
68
|
-
abstract wrap(): string;
|
|
69
|
-
}
|
|
70
|
-
export declare abstract class DateWrapper extends WrapStatement {
|
|
71
|
-
}
|
|
72
|
-
export declare abstract class DateTimeWrapper extends WrapStatement {
|
|
73
|
-
}
|
|
74
|
-
export declare abstract class JoinStatement extends QueryStatement {
|
|
75
|
-
protected _table: string;
|
|
76
|
-
protected _method: JoinMethod;
|
|
77
|
-
protected _foreignKey: string;
|
|
78
|
-
protected _primaryKey: string;
|
|
79
|
-
protected _query: RawQuery;
|
|
80
|
-
protected _alias: string;
|
|
81
|
-
protected _tableAlias: string;
|
|
82
|
-
constructor(table: string | RawQuery, method: JoinMethod, foreignKey: string, primaryKey: string, alias: string, tableAlias: string);
|
|
83
|
-
abstract build(): IQueryStatementResult;
|
|
84
|
-
}
|
|
85
|
-
export declare abstract class InStatement extends QueryStatement {
|
|
86
|
-
protected _val: any[];
|
|
87
|
-
protected _not: boolean;
|
|
88
|
-
protected _column: string;
|
|
89
|
-
constructor(column: string, val: any[], not: boolean, tableAlias: string);
|
|
90
|
-
abstract build(): IQueryStatementResult;
|
|
91
|
-
}
|
|
92
|
-
export declare abstract class SelectQueryStatement extends QueryStatement {
|
|
93
|
-
protected _builder: SelectQueryBuilder;
|
|
94
|
-
constructor(builder: SelectQueryBuilder, tableAlias?: string);
|
|
95
|
-
abstract build(): IQueryStatementResult;
|
|
96
|
-
}
|
|
97
|
-
export declare abstract class ExistsQueryStatement extends SelectQueryStatement {
|
|
98
|
-
protected _not: boolean;
|
|
99
|
-
constructor(builder: SelectQueryBuilder, not: boolean);
|
|
100
|
-
abstract build(): IQueryStatementResult;
|
|
101
|
-
}
|
|
102
|
-
export declare abstract class InSetStatement extends QueryStatement {
|
|
103
|
-
protected _val: any[];
|
|
104
|
-
protected _not: boolean;
|
|
105
|
-
protected _column: string;
|
|
106
|
-
constructor(column: string, val: any[], not: boolean, tableAlias: string);
|
|
107
|
-
abstract build(): IQueryStatementResult;
|
|
108
|
-
}
|
|
109
|
-
export declare abstract class ColumnStatement extends QueryStatement {
|
|
110
|
-
protected _column: string | RawQuery;
|
|
111
|
-
protected _alias: string;
|
|
112
|
-
protected _tableAlias: string;
|
|
113
|
-
protected _descriptor: IColumnDescriptor;
|
|
114
|
-
constructor(column: string | RawQuery, alias: string, tableAlias: string, descriptor: IColumnDescriptor);
|
|
115
|
-
get Descriptor(): IColumnDescriptor;
|
|
116
|
-
get Column(): string | RawQuery;
|
|
117
|
-
get Alias(): string;
|
|
118
|
-
get TableAlias(): string;
|
|
119
|
-
set TableAlias(alias: string);
|
|
120
|
-
get IsWildcard(): boolean;
|
|
121
|
-
abstract build(): IQueryStatementResult;
|
|
122
|
-
}
|
|
123
|
-
export declare abstract class ColumnRawStatement extends QueryStatement {
|
|
124
|
-
RawQuery: RawQuery;
|
|
125
|
-
constructor(RawQuery: RawQuery);
|
|
126
|
-
abstract build(): IQueryStatementResult;
|
|
127
|
-
}
|
|
128
|
-
export declare abstract class ColumnMethodStatement extends ColumnStatement {
|
|
129
|
-
protected _method: ColumnMethods;
|
|
130
|
-
constructor(column: string, method: ColumnMethods, alias: string, tableAlias: string);
|
|
131
|
-
abstract build(): IQueryStatementResult;
|
|
132
|
-
}
|