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