@spinajs/orm 2.0.490 → 2.0.494
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/README.md +80 -80
- package/lib/cjs/builders.d.ts +1 -2
- package/lib/cjs/builders.d.ts.map +1 -1
- package/lib/cjs/builders.js +2 -0
- package/lib/cjs/builders.js.map +1 -1
- package/lib/cjs/decorators.d.ts +22 -0
- package/lib/cjs/decorators.d.ts.map +1 -1
- package/lib/cjs/decorators.js +29 -0
- package/lib/cjs/decorators.js.map +1 -1
- package/lib/cjs/descriptor.d.ts.map +1 -1
- package/lib/cjs/descriptor.js +2 -0
- package/lib/cjs/descriptor.js.map +1 -1
- package/lib/cjs/driver.d.ts +12 -0
- package/lib/cjs/driver.d.ts.map +1 -1
- package/lib/cjs/driver.js +12 -0
- package/lib/cjs/driver.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +35 -24
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/cjs/model.d.ts +4 -5
- package/lib/cjs/model.d.ts.map +1 -1
- package/lib/cjs/model.js +6 -7
- package/lib/cjs/model.js.map +1 -1
- package/lib/cjs/orm.d.ts.map +1 -1
- package/lib/cjs/orm.js +4 -1
- package/lib/cjs/orm.js.map +1 -1
- package/lib/cjs/relation-objects.d.ts +76 -163
- package/lib/cjs/relation-objects.d.ts.map +1 -1
- package/lib/cjs/relation-objects.js +223 -192
- package/lib/cjs/relation-objects.js.map +1 -1
- package/lib/cjs/schema-providers.d.ts +34 -0
- package/lib/cjs/schema-providers.d.ts.map +1 -1
- package/lib/cjs/schema-providers.js +59 -3
- package/lib/cjs/schema-providers.js.map +1 -1
- package/lib/cjs/schema.d.ts +20 -3
- package/lib/cjs/schema.d.ts.map +1 -1
- package/lib/cjs/schema.js +59 -9
- package/lib/cjs/schema.js.map +1 -1
- package/lib/mjs/builders.d.ts +1 -2
- package/lib/mjs/builders.d.ts.map +1 -1
- package/lib/mjs/builders.js +2 -0
- package/lib/mjs/builders.js.map +1 -1
- package/lib/mjs/decorators.d.ts +22 -0
- package/lib/mjs/decorators.d.ts.map +1 -1
- package/lib/mjs/decorators.js +28 -0
- package/lib/mjs/decorators.js.map +1 -1
- package/lib/mjs/descriptor.d.ts.map +1 -1
- package/lib/mjs/descriptor.js +2 -0
- package/lib/mjs/descriptor.js.map +1 -1
- package/lib/mjs/driver.d.ts +12 -0
- package/lib/mjs/driver.d.ts.map +1 -1
- package/lib/mjs/driver.js +12 -0
- package/lib/mjs/driver.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +35 -24
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/mjs/model.d.ts +4 -5
- package/lib/mjs/model.d.ts.map +1 -1
- package/lib/mjs/model.js +6 -7
- package/lib/mjs/model.js.map +1 -1
- package/lib/mjs/orm.d.ts.map +1 -1
- package/lib/mjs/orm.js +4 -1
- package/lib/mjs/orm.js.map +1 -1
- package/lib/mjs/relation-objects.d.ts +76 -163
- package/lib/mjs/relation-objects.d.ts.map +1 -1
- package/lib/mjs/relation-objects.js +225 -194
- package/lib/mjs/relation-objects.js.map +1 -1
- package/lib/mjs/schema-providers.d.ts +34 -0
- package/lib/mjs/schema-providers.d.ts.map +1 -1
- package/lib/mjs/schema-providers.js +59 -3
- package/lib/mjs/schema-providers.js.map +1 -1
- package/lib/mjs/schema.d.ts +20 -3
- package/lib/mjs/schema.d.ts.map +1 -1
- package/lib/mjs/schema.js +59 -9
- package/lib/mjs/schema.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +75 -73
|
@@ -16,6 +16,7 @@ exports.OneToManyRelationList = exports.ManyToManyRelationList = exports.SingleQ
|
|
|
16
16
|
/* eslint-disable prettier/prettier */
|
|
17
17
|
const interfaces_js_1 = require("./interfaces.js");
|
|
18
18
|
const di_1 = require("@spinajs/di");
|
|
19
|
+
const luxon_1 = require("luxon");
|
|
19
20
|
const builders_js_1 = require("./builders.js");
|
|
20
21
|
const orm_js_1 = require("./orm.js");
|
|
21
22
|
const lodash_1 = __importDefault(require("lodash"));
|
|
@@ -23,52 +24,95 @@ const descriptor_js_1 = require("./descriptor.js");
|
|
|
23
24
|
const primary_keys_js_1 = require("./primary-keys.js");
|
|
24
25
|
const exceptions_js_1 = require("./exceptions.js");
|
|
25
26
|
/**
|
|
26
|
-
* Builds
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* row
|
|
27
|
+
* Builds the equality used by every keyed set operation.
|
|
28
|
+
*
|
|
29
|
+
* Same reference is always equal. Two DIFFERENT rows are equal only when every key column is
|
|
30
|
+
* set on both and the flattened key strings match — a fresh, unsaved model ( undefined key )
|
|
31
|
+
* never equals another row, so two new models are two members, not one. The previous
|
|
32
|
+
* `differenceBy` iteratee stringified undefined keys and collapsed all unsaved rows into one.
|
|
31
33
|
*/
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
function pkComparator(pKey) {
|
|
35
|
+
return (a, b) => {
|
|
36
|
+
if (a === b) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
if (pKey.length === 0) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const isSet = (x) => pKey.every((k) => x?.[k] !== null && x?.[k] !== undefined);
|
|
43
|
+
if (!isSet(a) || !isSet(b)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return (0, primary_keys_js_1.pkKeyStringFor)(a, pKey) === (0, primary_keys_js_1.pkKeyStringFor)(b, pKey);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A set operation with no comparator falls back to primary key equality, which needs key
|
|
51
|
+
* columns to exist. Comparing keyless rows silently matches nothing ( or everything ), so
|
|
52
|
+
* fail loudly instead.
|
|
53
|
+
*/
|
|
54
|
+
function assertSetOpKeys(pKey, callback) {
|
|
55
|
+
if (!callback && pKey.length === 0) {
|
|
56
|
+
throw new exceptions_js_1.OrmException('set operation compares by primary key, but the model declares no primary key columns; pass an explicit comparator callback');
|
|
35
57
|
}
|
|
36
|
-
return (x) => (0, primary_keys_js_1.pkKeyStringFor)(x, pKey);
|
|
37
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Pure, in-memory set algebra over model collections. Nothing here touches the database —
|
|
61
|
+
* apply a result with `relation.set(...)` and persist it with `sync()` / `update()` / `save()`.
|
|
62
|
+
*/
|
|
38
63
|
class Dataset {
|
|
39
64
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
65
|
+
* Calculates the symmetric difference between the relation data and the provided dataset —
|
|
66
|
+
* members of either set that are not in the other. In-memory only; persist with `sync()`.
|
|
42
67
|
*
|
|
43
68
|
* @param dataset - data to compare
|
|
44
|
-
* @param callback - function to compare objects, if none
|
|
69
|
+
* @param callback - function to compare objects, if none provided - primary key value is used
|
|
45
70
|
*/
|
|
46
71
|
static diff(dataset, callback) {
|
|
47
72
|
return (datasetB, pKey) => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// combine difference from two sets
|
|
56
|
-
const finalDiff = [...result, ...result2];
|
|
57
|
-
return finalDiff;
|
|
73
|
+
assertSetOpKeys(pKey, callback);
|
|
74
|
+
const eq = callback ?? pkComparator(pKey);
|
|
75
|
+
// members of dataset that are not in the relation data
|
|
76
|
+
const result = lodash_1.default.differenceWith(dataset, [...datasetB], eq);
|
|
77
|
+
// members of the relation data that are not in dataset
|
|
78
|
+
const result2 = lodash_1.default.differenceWith([...datasetB], dataset, eq);
|
|
79
|
+
return [...result, ...result2];
|
|
58
80
|
};
|
|
59
81
|
}
|
|
60
82
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* It saves result to db
|
|
83
|
+
* Calculates the intersection between the relation data and the provided dataset.
|
|
84
|
+
* In-memory only; persist with `sync()`.
|
|
64
85
|
*
|
|
65
86
|
* @param dataset - dataset to compare
|
|
66
87
|
* @param callback - function to compare models, if not set it is compared by primary key value
|
|
67
88
|
*/
|
|
68
89
|
static intersection(dataset, callback) {
|
|
69
90
|
return (datasetB, pKey) => {
|
|
70
|
-
|
|
71
|
-
|
|
91
|
+
assertSetOpKeys(pKey, callback);
|
|
92
|
+
const eq = callback ?? pkComparator(pKey);
|
|
93
|
+
return lodash_1.default.intersectionWith(dataset, [...datasetB], eq);
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Calculates the union of the relation data and the provided dataset. Members already
|
|
98
|
+
* present ( by primary key or comparator ) are kept once, the relation's own instance
|
|
99
|
+
* winning over the incoming duplicate. Unsaved models compare by reference, so they are
|
|
100
|
+
* always appended. In-memory only; persist with `sync()`.
|
|
101
|
+
*
|
|
102
|
+
* @param dataset - data to add
|
|
103
|
+
* @param callback - function to compare models, if not set it is compared by primary key value
|
|
104
|
+
*/
|
|
105
|
+
static union(dataset, callback) {
|
|
106
|
+
return (datasetB, pKey) => {
|
|
107
|
+
assertSetOpKeys(pKey, callback);
|
|
108
|
+
const eq = callback ?? pkComparator(pKey);
|
|
109
|
+
const result = [...datasetB];
|
|
110
|
+
for (const item of dataset) {
|
|
111
|
+
if (!result.some((existing) => eq(existing, item))) {
|
|
112
|
+
result.push(item);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
72
116
|
};
|
|
73
117
|
}
|
|
74
118
|
}
|
|
@@ -80,15 +124,14 @@ exports.Dataset = Dataset;
|
|
|
80
124
|
*/
|
|
81
125
|
let Relation = class Relation extends Array {
|
|
82
126
|
/**
|
|
83
|
-
* Array methods that derive a new collection ( `splice`, `filter`, `slice`, `concat`,
|
|
84
|
-
* construct `new this.constructor[Symbol.species](len)` by default. That would
|
|
85
|
-
* class's constructor with no relation descriptor, and the very next line
|
|
86
|
-
* `this.Relation.TargetModel` — so `order.Items.splice(0, 1)` threw
|
|
127
|
+
* Array methods that derive a new collection ( `splice`, `filter`, `slice`, `concat`,
|
|
128
|
+
* `map`, … ) construct `new this.constructor[Symbol.species](len)` by default. That would
|
|
129
|
+
* call this class's constructor with no relation descriptor, and the very next line
|
|
130
|
+
* dereferences `this.Relation.TargetModel` — so `order.Items.splice(0, 1)` threw
|
|
87
131
|
* `Cannot read properties of undefined (reading 'TargetModel')`.
|
|
88
132
|
*
|
|
89
133
|
* Deriving plain arrays is also the right semantics: a slice of a relation is a list of
|
|
90
|
-
* models, not a relation with an owner.
|
|
91
|
-
* worked around the same thing for one method. )
|
|
134
|
+
* models, not a relation with an owner.
|
|
92
135
|
*/
|
|
93
136
|
static get [Symbol.species]() {
|
|
94
137
|
return Array;
|
|
@@ -106,7 +149,6 @@ let Relation = class Relation extends Array {
|
|
|
106
149
|
if (this.TargetModelDescriptor) {
|
|
107
150
|
this.Driver = di_1.DI.resolve('OrmConnection', [this.TargetModelDescriptor.Connection]);
|
|
108
151
|
}
|
|
109
|
-
this.IsModelAForwardRef = !(0, di_1.isConstructor)(this.Model);
|
|
110
152
|
}
|
|
111
153
|
/**
|
|
112
154
|
* The owner-side value this relation joins on.
|
|
@@ -123,13 +165,18 @@ let Relation = class Relation extends Array {
|
|
|
123
165
|
const key = this.Relation?.PrimaryKey;
|
|
124
166
|
return key ? this.Owner[key] : this.Owner.PrimaryKeyValue;
|
|
125
167
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
168
|
+
remove(obj) {
|
|
169
|
+
let toRemove;
|
|
170
|
+
if (lodash_1.default.isFunction(obj)) {
|
|
171
|
+
toRemove = [...this].filter(obj);
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
const candidates = Array.isArray(obj) ? obj : [obj];
|
|
175
|
+
const eq = pkComparator((0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor));
|
|
176
|
+
toRemove = [...this].filter((member) => candidates.some((c) => eq(member, c)));
|
|
131
177
|
}
|
|
132
|
-
|
|
178
|
+
this.set((data) => data.filter((d) => !toRemove.includes(d)));
|
|
179
|
+
return toRemove;
|
|
133
180
|
}
|
|
134
181
|
/**
|
|
135
182
|
* Delete all objects from relation ( alias for empty )
|
|
@@ -143,6 +190,51 @@ let Relation = class Relation extends Array {
|
|
|
143
190
|
empty() {
|
|
144
191
|
this.length = 0;
|
|
145
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Calculates the intersection between this relation and the provided dataset. Pure
|
|
195
|
+
* computation — apply it with `set()` and persist with `sync()` / `save()`.
|
|
196
|
+
*
|
|
197
|
+
* @param dataset - dataset to compare
|
|
198
|
+
* @param callback - function to compare models, if not set it is compared by primary key value
|
|
199
|
+
* @returns members present in both sets
|
|
200
|
+
*/
|
|
201
|
+
intersection(dataset, callback) {
|
|
202
|
+
return Dataset.intersection(dataset, callback)([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor));
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Adds the dataset's members to this relation, skipping members already present ( compared
|
|
206
|
+
* by primary key, or by the callback ). In-memory only — nothing is written until `sync()`,
|
|
207
|
+
* `update()` or `save()`.
|
|
208
|
+
*
|
|
209
|
+
* @param dataset - data to add
|
|
210
|
+
* @param callback - function to compare models, if not set it is compared by primary key value
|
|
211
|
+
*/
|
|
212
|
+
union(dataset, callback) {
|
|
213
|
+
this.set(Dataset.union(dataset, callback)([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor)));
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Calculates the symmetric difference between this relation and the dataset — members of
|
|
217
|
+
* this relation that are not in the dataset, plus members of the dataset that are not in
|
|
218
|
+
* this relation. Pure computation — apply it with `set()` and persist with `sync()`.
|
|
219
|
+
*
|
|
220
|
+
* @param dataset - data to compare
|
|
221
|
+
* @param callback - function to compare objects, if none provided - primary key value is used
|
|
222
|
+
*/
|
|
223
|
+
diff(dataset, callback) {
|
|
224
|
+
return Dataset.diff(dataset, callback)([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor));
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Clears the relation and replaces its members with the new dataset ( or with the result of
|
|
228
|
+
* a `Dataset.diff` / `Dataset.intersection` / `Dataset.union` closure ). In-memory only —
|
|
229
|
+
* persist with `sync()` / `update()` / `save()`.
|
|
230
|
+
*
|
|
231
|
+
* @param obj - replacement data, or a closure receiving the current members and the primary key columns
|
|
232
|
+
*/
|
|
233
|
+
set(obj) {
|
|
234
|
+
const toPush = lodash_1.default.isFunction(obj) ? obj([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor)) : obj;
|
|
235
|
+
this.empty();
|
|
236
|
+
this.push(...toPush);
|
|
237
|
+
}
|
|
146
238
|
};
|
|
147
239
|
exports.Relation = Relation;
|
|
148
240
|
exports.Relation = Relation = __decorate([
|
|
@@ -243,30 +335,29 @@ exports.SingleRelation = SingleRelation = __decorate([
|
|
|
243
335
|
__metadata("design:paramtypes", [Object, Object, Object, Object])
|
|
244
336
|
], SingleRelation);
|
|
245
337
|
class ManyQueryRelationList extends Relation {
|
|
246
|
-
/* eslint-disable prettier/prettier */
|
|
247
338
|
remove(_obj) {
|
|
248
|
-
throw new
|
|
339
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be removed. This relation is used only for query purposes and it is always populated.');
|
|
249
340
|
}
|
|
250
341
|
sync() {
|
|
251
|
-
throw new
|
|
342
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be synced. This relation is used only for query purposes and it is always populated.');
|
|
252
343
|
}
|
|
253
344
|
update() {
|
|
254
|
-
throw new
|
|
345
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be updated. This relation is used only for query purposes and it is always populated.');
|
|
255
346
|
}
|
|
256
347
|
intersection(_dataset, _callback) {
|
|
257
|
-
throw new
|
|
348
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be intersected. This relation is used only for query purposes and it is always populated.');
|
|
258
349
|
}
|
|
259
|
-
union(_dataset,
|
|
260
|
-
throw new
|
|
350
|
+
union(_dataset, _callback) {
|
|
351
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be unioned. This relation is used only for query purposes and it is always populated.');
|
|
261
352
|
}
|
|
262
353
|
diff(_dataset, _callback) {
|
|
263
|
-
throw new
|
|
354
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be diffed. This relation is used only for query purposes and it is always populated.');
|
|
264
355
|
}
|
|
265
356
|
set(_obj) {
|
|
266
|
-
throw new
|
|
357
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be set. This relation is used only for query purposes and it is always populated.');
|
|
267
358
|
}
|
|
268
359
|
populate(_callback) {
|
|
269
|
-
throw new
|
|
360
|
+
throw new exceptions_js_1.OrmException('Query relations cannot be populated. This relation is used only for query purposes and it is always populated.');
|
|
270
361
|
}
|
|
271
362
|
constructor(owner, relation, objects) {
|
|
272
363
|
super(owner, relation, objects);
|
|
@@ -288,58 +379,6 @@ let ManyToManyRelationList = class ManyToManyRelationList extends Relation {
|
|
|
288
379
|
this.junctionModelDescriptor = (0, descriptor_js_1.extractModelDescriptor)(this.Relation.JunctionModel);
|
|
289
380
|
}
|
|
290
381
|
}
|
|
291
|
-
/**
|
|
292
|
-
* Calculates intersection between data in this relation and provided dataset
|
|
293
|
-
*
|
|
294
|
-
* `[...this]` rather than `this`: these delegate into lodash, and `Relation extends Array`
|
|
295
|
-
* with a three-argument constructor, so anything that derives a new collection has to work
|
|
296
|
-
* on a plain array. ( `OneToManyRelationList` sidesteps the same problem by overriding
|
|
297
|
-
* `filter`/`map`; this class has no such overrides. )
|
|
298
|
-
*
|
|
299
|
-
* @param obj - dataset to compare with
|
|
300
|
-
* @param callback - compare function, if not set the target model's primary key is used
|
|
301
|
-
* @returns members present in both sets
|
|
302
|
-
*/
|
|
303
|
-
intersection(obj, callback) {
|
|
304
|
-
return Dataset.intersection(obj, callback)([...this], this.TargetModelDescriptor.PrimaryKey);
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Appends `obj` to this relation. Shorthand for push — nothing is removed and nothing is
|
|
308
|
-
* written to the database until `sync()`, `update()` or `save()` runs.
|
|
309
|
-
*
|
|
310
|
-
* @param obj - members to add
|
|
311
|
-
*/
|
|
312
|
-
union(obj, _mode) {
|
|
313
|
-
this.push(...obj);
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Calculates the symmetric difference between this relation and `dataset` — members of this
|
|
317
|
-
* relation that are not in the dataset, plus members of the dataset that are not in this
|
|
318
|
-
* relation.
|
|
319
|
-
*
|
|
320
|
-
* @param obj - dataset to compare with
|
|
321
|
-
* @param callback - compare function, if not set the target model's primary key is used
|
|
322
|
-
*/
|
|
323
|
-
diff(obj, callback) {
|
|
324
|
-
return Dataset.diff(obj, callback)([...this], this.TargetModelDescriptor.PrimaryKey);
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Sets data in relation ( clear data and replace with new dataset )
|
|
328
|
-
*
|
|
329
|
-
* @param obj
|
|
330
|
-
*/
|
|
331
|
-
set(obj) {
|
|
332
|
-
const toPush = lodash_1.default.isFunction(obj) ? obj([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor)) : obj;
|
|
333
|
-
this.empty();
|
|
334
|
-
this.push(...toPush);
|
|
335
|
-
}
|
|
336
|
-
remove(obj) {
|
|
337
|
-
const toRemove = lodash_1.default.isFunction(obj) ? this.filter(obj) : Array.isArray(obj) ? obj : [obj];
|
|
338
|
-
this.set((data) => {
|
|
339
|
-
return data.filter((d) => !toRemove.includes(d));
|
|
340
|
-
});
|
|
341
|
-
return toRemove;
|
|
342
|
-
}
|
|
343
382
|
/**
|
|
344
383
|
* Deletes from db data that are not in relation
|
|
345
384
|
*
|
|
@@ -356,8 +395,10 @@ let ManyToManyRelationList = class ManyToManyRelationList extends Relation {
|
|
|
356
395
|
if (this.Driver.Options.Database) {
|
|
357
396
|
query.database(this.Driver.Options.Database);
|
|
358
397
|
}
|
|
359
|
-
// if we have data in relation, we need to exclude them from delete query
|
|
360
|
-
|
|
398
|
+
// if we have data in relation, we need to exclude them from delete query.
|
|
399
|
+
// Explicit null/undefined checks — a primary key of 0 or '' is a real key, and dropping
|
|
400
|
+
// it from the keep-list would delete that member's junction row.
|
|
401
|
+
const toDelete = [...data].map((x) => x.PrimaryKeyValue).filter((v) => v !== null && v !== undefined);
|
|
361
402
|
if (toDelete.length !== 0) {
|
|
362
403
|
query.whereNotIn(this.Relation.JunctionModelTargetModelFKey_Name, toDelete);
|
|
363
404
|
}
|
|
@@ -368,8 +409,6 @@ let ManyToManyRelationList = class ManyToManyRelationList extends Relation {
|
|
|
368
409
|
* Deletes from db entries that are not in relation and adds entries that are not in db
|
|
369
410
|
* Sets foreign key to relational data
|
|
370
411
|
*
|
|
371
|
-
* Inserts or updates models that are dirty only.
|
|
372
|
-
*
|
|
373
412
|
* One transaction: the junction upserts and the orphan delete used to be independent
|
|
374
413
|
* statements. Nested inside a caller's transaction this takes a savepoint.
|
|
375
414
|
*/
|
|
@@ -380,42 +419,69 @@ let ManyToManyRelationList = class ManyToManyRelationList extends Relation {
|
|
|
380
419
|
});
|
|
381
420
|
}
|
|
382
421
|
/**
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
*
|
|
422
|
+
* Adds missing rows to the database without deleting anything: unsaved members are
|
|
423
|
+
* inserted, members without a junction row get one. Existing junction rows are left
|
|
424
|
+
* untouched.
|
|
386
425
|
*/
|
|
387
426
|
async update() {
|
|
388
427
|
await this.Driver.transaction(async () => {
|
|
389
428
|
await this._update();
|
|
390
429
|
});
|
|
391
430
|
}
|
|
392
|
-
/**
|
|
431
|
+
/**
|
|
432
|
+
* Finds the junction model's relation pointing at `model`, by constructor identity — the
|
|
433
|
+
* junction's PROPERTY name is the author's choice ( `Order`, `Tag`, … ) and has nothing to
|
|
434
|
+
* do with the target class name.
|
|
435
|
+
*/
|
|
436
|
+
junctionRelationFor(model) {
|
|
437
|
+
const relations = Array.from(this.junctionModelDescriptor?.Relations.values() ?? []);
|
|
438
|
+
const found = relations.find((r) => r.TargetModel === model);
|
|
439
|
+
if (!found) {
|
|
440
|
+
throw new exceptions_js_1.OrmException(`junction model ${this.junctionModelDescriptor?.Name} of relation ${this.Relation.Name} declares no relation targeting ${model?.name}; add a @BelongsTo for it`);
|
|
441
|
+
}
|
|
442
|
+
return found;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* The write itself, without a transaction of its own, so `sync()` can share one.
|
|
446
|
+
*
|
|
447
|
+
* Unsaved members are inserted first — a junction row written for a model with no primary
|
|
448
|
+
* key would carry a NULL foreign key. Members that already have a junction row are skipped:
|
|
449
|
+
* the junction's own primary key is auto-generated, so re-inserting the pair would DUPLICATE
|
|
450
|
+
* the link rather than upsert it ( which is exactly what repeated `sync()` calls used to do ).
|
|
451
|
+
*/
|
|
393
452
|
async _update() {
|
|
453
|
+
const sourceModelRelation = this.junctionRelationFor(this.Owner.constructor);
|
|
454
|
+
const existingQuery = this.Driver.select().from(this.junctionModelDescriptor.TableName).where(this.Relation.JunctionModelSourceModelFKey_Name, this.OwnerJoinValue);
|
|
455
|
+
if (this.Driver.Options.Database) {
|
|
456
|
+
existingQuery.database(this.Driver.Options.Database);
|
|
457
|
+
}
|
|
458
|
+
const existingRows = (await existingQuery.asRaw()) ?? [];
|
|
459
|
+
const linked = new Set(existingRows.map((r) => r[this.Relation.JunctionModelTargetModelFKey_Name]).filter((v) => v !== null && v !== undefined));
|
|
394
460
|
for (const f of this) {
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
const relationsArray = Array.from(desc.Relations.values());
|
|
398
|
-
const sourceModelRelation = relationsArray.find((r) => r.TargetModel === this.Owner.constructor);
|
|
399
|
-
const targetModelRelation = relationsArray.find((r) => r.TargetModel === f.constructor);
|
|
400
|
-
if (!sourceModelRelation) {
|
|
401
|
-
throw new Error(`Junction model relation for source model ${this.Owner.constructor.name} not found.`);
|
|
461
|
+
if (f.PrimaryKeyValue === null || f.PrimaryKeyValue === undefined) {
|
|
462
|
+
await f.insert(interfaces_js_1.InsertBehaviour.InsertOrUpdate);
|
|
402
463
|
}
|
|
403
|
-
if (
|
|
404
|
-
|
|
464
|
+
if (linked.has(f.PrimaryKeyValue)) {
|
|
465
|
+
continue;
|
|
405
466
|
}
|
|
467
|
+
const targetModelRelation = this.junctionRelationFor(f.constructor);
|
|
468
|
+
const junctionEntry = new this.Relation.JunctionModel();
|
|
406
469
|
junctionEntry[sourceModelRelation.Name].Value = this.Owner;
|
|
407
470
|
junctionEntry[targetModelRelation.Name].Value = f;
|
|
408
471
|
await junctionEntry.insert(interfaces_js_1.InsertBehaviour.InsertOrUpdate);
|
|
409
472
|
}
|
|
410
473
|
}
|
|
411
474
|
async populate(callback) {
|
|
475
|
+
// Resolved by constructor, not by `TargetModel.name` — the junction's property name is
|
|
476
|
+
// unrelated to the target class name, and class names do not survive minification.
|
|
477
|
+
const targetModelRelation = this.junctionRelationFor(this.Relation.TargetModel);
|
|
412
478
|
const query = this.Relation.JunctionModel.where(this.Relation.JunctionModelSourceModelFKey_Name, this.OwnerJoinValue).populate(this.Relation.TargetModel, callback);
|
|
413
479
|
const result = await query;
|
|
414
480
|
if (result) {
|
|
415
481
|
this.length = 0;
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
482
|
+
// A junction row whose target row no longer exists resolves to a null Value — skip it
|
|
483
|
+
// rather than push null into the member list.
|
|
484
|
+
this.push(...result.map((r) => r[targetModelRelation.Name].Value).filter((v) => v !== null && v !== undefined));
|
|
419
485
|
}
|
|
420
486
|
this.Populated = true;
|
|
421
487
|
this.Owner.snapshotRelation(this.Relation.Name);
|
|
@@ -434,24 +500,45 @@ let OneToManyRelationList = class OneToManyRelationList extends Relation {
|
|
|
434
500
|
* @returns
|
|
435
501
|
*/
|
|
436
502
|
async _dbDiff(data) {
|
|
437
|
-
const query = this.Driver.del().from(this.TargetModelDescriptor.TableName).where(this.Relation.ForeignKey, this.OwnerJoinValue);
|
|
438
|
-
if (this.Driver.Options.Database) {
|
|
439
|
-
query.database(this.Driver.Options.Database);
|
|
440
|
-
}
|
|
441
|
-
// if we have data in relation, we need to exclude them from delete query.
|
|
442
503
|
// A composite key is a tuple and always truthy, so filter on the key COLUMNS being set
|
|
443
504
|
// rather than on the tuple itself.
|
|
444
505
|
const keys = (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor);
|
|
445
|
-
const
|
|
506
|
+
const toKeep = data
|
|
446
507
|
.map((x) => (0, primary_keys_js_1.pkValueOf)(x, this.TargetModelDescriptor))
|
|
447
508
|
.filter((v) => (Array.isArray(v) ? v.every((p) => p !== null && p !== undefined) : v !== null && v !== undefined));
|
|
448
|
-
|
|
449
|
-
|
|
509
|
+
// A `@SoftDelete` target is never hard-deleted — the same degradation
|
|
510
|
+
// `SubjectExecutor.effectivePolicy` applies to orphans on the save() path. The stamp goes
|
|
511
|
+
// through a model-aware builder so the DateTime passes the column's converter.
|
|
512
|
+
const softDeleteColumn = this.TargetModelDescriptor.SoftDelete?.DeletedAt;
|
|
513
|
+
if (softDeleteColumn) {
|
|
514
|
+
const { query } = (0, builders_js_1.createQuery)(this.Relation.TargetModel, builders_js_1.UpdateQueryBuilder);
|
|
515
|
+
const update = query.update({ [softDeleteColumn]: luxon_1.DateTime.now() });
|
|
516
|
+
update.where(this.Relation.ForeignKey, this.OwnerJoinValue);
|
|
517
|
+
// Rows stamped by an earlier sync keep their original deletion time.
|
|
518
|
+
update.whereNull(softDeleteColumn);
|
|
519
|
+
if (toKeep.length !== 0 && keys.length !== 0) {
|
|
520
|
+
(0, primary_keys_js_1.whereNotAnyPk)(update, this.TargetModelDescriptor, toKeep);
|
|
521
|
+
}
|
|
522
|
+
await update;
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
const query = this.Driver.del().from(this.TargetModelDescriptor.TableName).where(this.Relation.ForeignKey, this.OwnerJoinValue);
|
|
526
|
+
if (this.Driver.Options.Database) {
|
|
527
|
+
query.database(this.Driver.Options.Database);
|
|
528
|
+
}
|
|
529
|
+
// if we have data in relation, we need to exclude them from the delete query
|
|
530
|
+
if (toKeep.length !== 0 && keys.length !== 0) {
|
|
531
|
+
(0, primary_keys_js_1.whereNotAnyPk)(query, this.TargetModelDescriptor, toKeep);
|
|
450
532
|
}
|
|
451
533
|
await query;
|
|
452
534
|
}
|
|
453
535
|
/**
|
|
454
536
|
* Populates this relation ( loads all data related to owner of this relation)
|
|
537
|
+
*
|
|
538
|
+
* Pushes the rows into THIS list rather than routing through `Owner.attach()`: attach flags
|
|
539
|
+
* the owner dirty ( a read must not create unsaved changes ), feeds every sibling relation
|
|
540
|
+
* with the same target model, and drops discriminated subclass rows because their
|
|
541
|
+
* constructor is not the declared target. Only attach's back-reference wiring is kept.
|
|
455
542
|
*/
|
|
456
543
|
async populate(callback) {
|
|
457
544
|
const query = this.Relation.TargetModel.where(this.Relation.ForeignKey, this.OwnerJoinValue);
|
|
@@ -462,7 +549,12 @@ let OneToManyRelationList = class OneToManyRelationList extends Relation {
|
|
|
462
549
|
if (result) {
|
|
463
550
|
this.length = 0;
|
|
464
551
|
result.forEach((r) => {
|
|
465
|
-
this.
|
|
552
|
+
// Set the child's back-reference to this owner, when the child declares one.
|
|
553
|
+
const backRef = [...(r.ModelDescriptor?.Relations.entries() ?? [])].find((e) => e[1].ForeignKey === this.Relation.ForeignKey);
|
|
554
|
+
if (backRef) {
|
|
555
|
+
r[backRef[0]].Value = this.Owner;
|
|
556
|
+
}
|
|
557
|
+
this.push(r);
|
|
466
558
|
});
|
|
467
559
|
}
|
|
468
560
|
this.Populated = true;
|
|
@@ -512,67 +604,6 @@ let OneToManyRelationList = class OneToManyRelationList extends Relation {
|
|
|
512
604
|
await f.insert(interfaces_js_1.InsertBehaviour.InsertOrUpdate);
|
|
513
605
|
}
|
|
514
606
|
}
|
|
515
|
-
/**
|
|
516
|
-
* Calculates difference between this relation and dataset ( items from this relation that are not in dataset and items from dataset that are not in this relation)
|
|
517
|
-
*
|
|
518
|
-
* @param dataset
|
|
519
|
-
* @param callback
|
|
520
|
-
* @returns Difference between this relation and dataset
|
|
521
|
-
*/
|
|
522
|
-
diff(dataset, callback) {
|
|
523
|
-
return Dataset.diff(dataset, callback)([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor));
|
|
524
|
-
}
|
|
525
|
-
/**
|
|
526
|
-
* Sets data in relation ( clear data and replace with new dataset )
|
|
527
|
-
*
|
|
528
|
-
* @param obj
|
|
529
|
-
*/
|
|
530
|
-
set(obj) {
|
|
531
|
-
const toPush = lodash_1.default.isFunction(obj) ? obj([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor)) : obj;
|
|
532
|
-
this.empty();
|
|
533
|
-
this.push(...toPush);
|
|
534
|
-
}
|
|
535
|
-
/**
|
|
536
|
-
* Calculates intersection between data in this relation and provided dataset
|
|
537
|
-
*
|
|
538
|
-
* @param obj
|
|
539
|
-
* @param callback compare function, if not set - primary key value is used
|
|
540
|
-
* @returns Data that are in both sets
|
|
541
|
-
*/
|
|
542
|
-
intersection(obj, callback) {
|
|
543
|
-
return Dataset.intersection(obj, callback)([...this], (0, primary_keys_js_1.pkColumns)(this.TargetModelDescriptor));
|
|
544
|
-
}
|
|
545
|
-
/**
|
|
546
|
-
* Combines data with this relation and saves to db
|
|
547
|
-
* Shorthand for push
|
|
548
|
-
* @param obj
|
|
549
|
-
*/
|
|
550
|
-
union(obj) {
|
|
551
|
-
this.push(...obj);
|
|
552
|
-
}
|
|
553
|
-
/**
|
|
554
|
-
* Returns the elements of an array that meet the condition specified in a callback function.
|
|
555
|
-
* @param predicate A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.
|
|
556
|
-
*/
|
|
557
|
-
filter(predicate) {
|
|
558
|
-
return [...this].filter(predicate);
|
|
559
|
-
}
|
|
560
|
-
remove(obj) {
|
|
561
|
-
const toRemove = lodash_1.default.isFunction(obj) ? this.filter(obj) : Array.isArray(obj) ? obj : [obj];
|
|
562
|
-
this.set((data) => {
|
|
563
|
-
return data.filter((d) => !toRemove.includes(d));
|
|
564
|
-
});
|
|
565
|
-
return toRemove;
|
|
566
|
-
}
|
|
567
|
-
flatMap(callback) {
|
|
568
|
-
const r = this.map(callback);
|
|
569
|
-
return r.flatMap(x => x);
|
|
570
|
-
}
|
|
571
|
-
map(callback) {
|
|
572
|
-
const r = [];
|
|
573
|
-
this.forEach((x, i, a) => r.push(callback(x, i, a)));
|
|
574
|
-
return r;
|
|
575
|
-
}
|
|
576
607
|
};
|
|
577
608
|
exports.OneToManyRelationList = OneToManyRelationList;
|
|
578
609
|
exports.OneToManyRelationList = OneToManyRelationList = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relation-objects.js","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"relation-objects.js","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
|