@spinajs/orm 2.0.39 → 2.0.45

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.
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
package/lib/model.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import { PickRelations } from './types';
2
- import { Relation } from './relations';
1
+ import { ModelData, ModelDataWithRelationData, PickRelations } from './types';
3
2
  import { IModelDescriptor, InsertBehaviour, IUpdateResult, IWhereBuilder, QueryScope, IHistoricalModel } from './interfaces';
4
3
  import { WhereFunction } from './types';
5
4
  import { RawQuery, UpdateQueryBuilder, TruncateTableQueryBuilder, QueryBuilder, SelectQueryBuilder, DeleteQueryBuilder, InsertQueryBuilder } from './builders';
@@ -29,9 +28,18 @@ export interface IModelBase {
29
28
  */
30
29
  attach(data: ModelBase): void;
31
30
  /**
32
- * Extracts all data from model. It takes only properties that exists in DB
31
+ * Extracts all data from model. It takes only properties that exists in DB. Does not dehydrate related data.
32
+ *
33
+ * @param omit - fields to omit
33
34
  */
34
- dehydrate(omit?: string[]): Partial<this>;
35
+ dehydrate(omit?: string[]): ModelData<this>;
36
+ /**
37
+ *
38
+ * Extracts all data from model with relation data. Relation data are dehydrated recursively.
39
+ *
40
+ * @param omit - fields to omit
41
+ */
42
+ dehydrateWithRelations(omit?: string[]): ModelDataWithRelationData<this>;
35
43
  /**
36
44
  * deletes enitt from db. If model have SoftDelete decorator, model is marked as deleted
37
45
  */
@@ -40,6 +48,9 @@ export interface IModelBase {
40
48
  * If model can be in achived state - sets archived at date and saves it to db
41
49
  */
42
50
  archive(): Promise<void>;
51
+ /**
52
+ * Updates model to db
53
+ */
43
54
  update(): Promise<void>;
44
55
  /**
45
56
  * Save all changes to db. It creates new entry id db or updates existing one if
@@ -60,6 +71,9 @@ export interface IModelBase {
60
71
  * with unique constraints. If none exists, throws exception
61
72
  */
62
73
  refresh(): Promise<void>;
74
+ /**
75
+ * Used for JSON serialization
76
+ */
63
77
  toJSON(): any;
64
78
  driver(): OrmDriver;
65
79
  }
@@ -101,7 +115,7 @@ export declare class ModelBase<M = unknown> implements IModelBase {
101
115
  *
102
116
  * @param _data - data to insert
103
117
  */
104
- static insert<T extends typeof ModelBase>(this: T, _data: InstanceType<T> | Partial<InstanceType<T>> | PickRelations<T, Relation<any, any>> | Array<InstanceType<T>> | Array<Partial<InstanceType<T>>>, _insertBehaviour?: InsertBehaviour): InsertQueryBuilder;
118
+ static insert<T extends typeof ModelBase>(this: T, _data: InstanceType<T> | Partial<InstanceType<T>> | PickRelations<T> | Array<InstanceType<T>> | Array<Partial<InstanceType<T>>>, _insertBehaviour?: InsertBehaviour): InsertQueryBuilder;
105
119
  /**
106
120
  * Search entities in db
107
121
  *
@@ -110,12 +124,12 @@ export declare class ModelBase<M = unknown> implements IModelBase {
110
124
  * @param value - value to compare
111
125
  */
112
126
  static where<T extends typeof ModelBase>(this: T, val: boolean): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
113
- static where<T extends typeof ModelBase>(this: T, val: Partial<InstanceType<T>> | PickRelations<T, Relation<any, any>>): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
127
+ static where<T extends typeof ModelBase>(this: T, val: Partial<InstanceType<T>> | PickRelations<T>): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
114
128
  static where<T extends typeof ModelBase>(this: T, func: WhereFunction<InstanceType<T>>): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
115
129
  static where<T extends typeof ModelBase>(this: T, column: string, operator: Op, value: any): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
116
130
  static where<T extends typeof ModelBase>(this: T, column: string, value: any): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
117
131
  static where<T extends typeof ModelBase>(this: T, statement: Wrap): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
118
- static where<T extends typeof ModelBase>(this: T, column: string | boolean | WhereFunction<InstanceType<T>> | RawQuery | Partial<InstanceType<T>> | Wrap | PickRelations<T, Relation<any, any>>, operator?: Op | any, value?: any): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
132
+ static where<T extends typeof ModelBase>(this: T, column: string | boolean | WhereFunction<InstanceType<T>> | RawQuery | Partial<InstanceType<T>> | Wrap | PickRelations<T>, operator?: Op | any, value?: any): SelectQueryBuilder<Array<InstanceType<T>>> & T['_queryScopes'];
119
133
  /**
120
134
  * Updates single or multiple records at once with provided value based on condition
121
135
  *
@@ -212,7 +226,14 @@ export declare class ModelBase<M = unknown> implements IModelBase {
212
226
  /**
213
227
  * Extracts all data from model. It takes only properties that exists in DB
214
228
  */
215
- dehydrate(omit?: string[]): Partial<this>;
229
+ dehydrate(omit?: string[]): ModelData<this>;
230
+ /**
231
+ *
232
+ * Extracts all data from model with relation data. Relation data are dehydrated recursively.
233
+ *
234
+ * @param omit - fields to omit
235
+ */
236
+ dehydrateWithRelations(omit?: string[]): ModelDataWithRelationData<this>;
216
237
  toSql(): Partial<this>;
217
238
  /**
218
239
  * deletes enitt from db. If model have SoftDelete decorator, model is marked as deleted
@@ -228,6 +249,14 @@ export declare class ModelBase<M = unknown> implements IModelBase {
228
249
  * primary key exists
229
250
  */
230
251
  insert(insertBehaviour?: InsertBehaviour): Promise<IUpdateResult>;
252
+ /**
253
+ *
254
+ * Shorthand for inserting model when no primary key exists, or update
255
+ * its value in db if primary key is set
256
+ *
257
+ * @param insertBehaviour - insert mode
258
+ */
259
+ insertOrUpdate(insertBehaviour?: InsertBehaviour): Promise<void>;
231
260
  /**
232
261
  * Gets model data from database and returns as fresh instance.
233
262
  *
@@ -242,7 +271,7 @@ export declare class ModelBase<M = unknown> implements IModelBase {
242
271
  * with unique constraints. If none exists, throws exception
243
272
  */
244
273
  refresh(): Promise<void>;
245
- toJSON(): Partial<this>;
274
+ toJSON(): ModelData<this>;
246
275
  /**
247
276
  * sets default values for model. values are taken from DB default column prop
248
277
  */
package/lib/model.js CHANGED
@@ -300,7 +300,16 @@ class ModelBase {
300
300
  * Extracts all data from model. It takes only properties that exists in DB
301
301
  */
302
302
  dehydrate(omit) {
303
- return this.Container.resolve(dehydrators_1.ModelDehydrator).dehydrate(this, [...(omit !== null && omit !== void 0 ? omit : []), ...this._hidden]);
303
+ return this.Container.resolve(dehydrators_1.StandardModelDehydrator).dehydrate(this, [...(omit !== null && omit !== void 0 ? omit : []), ...this._hidden]);
304
+ }
305
+ /**
306
+ *
307
+ * Extracts all data from model with relation data. Relation data are dehydrated recursively.
308
+ *
309
+ * @param omit - fields to omit
310
+ */
311
+ dehydrateWithRelations(omit) {
312
+ return this.Container.resolve(dehydrators_1.StandardModelWithRelationsDehydrator).dehydrate(this, [...(omit !== null && omit !== void 0 ? omit : []), ...this._hidden]);
304
313
  }
305
314
  toSql() {
306
315
  var _a;
@@ -335,13 +344,13 @@ class ModelBase {
335
344
  * If model can be in achived state - sets archived at date and saves it to db
336
345
  */
337
346
  async archive() {
338
- const { query } = this.createUpdateQuery();
339
347
  if (this.ModelDescriptor.Archived) {
340
348
  this[this.ModelDescriptor.Archived.ArchivedAt] = luxon_1.DateTime.now();
341
349
  }
342
350
  else {
343
351
  throw new exceptions_1.OrmException('archived at column not exists in model');
344
352
  }
353
+ const { query } = this.createUpdateQuery();
345
354
  await query.update(this.toSql()).where(this.PrimaryKeyName, this.PrimaryKeyValue);
346
355
  }
347
356
  async update() {
@@ -380,6 +389,21 @@ class ModelBase {
380
389
  query.middleware(iMidleware);
381
390
  return query.values(this.toSql());
382
391
  }
392
+ /**
393
+ *
394
+ * Shorthand for inserting model when no primary key exists, or update
395
+ * its value in db if primary key is set
396
+ *
397
+ * @param insertBehaviour - insert mode
398
+ */
399
+ async insertOrUpdate(insertBehaviour = interfaces_1.InsertBehaviour.None) {
400
+ if (this.PrimaryKeyValue) {
401
+ await this.update();
402
+ }
403
+ else {
404
+ await this.insert(insertBehaviour);
405
+ }
406
+ }
383
407
  /**
384
408
  * Gets model data from database and returns as fresh instance.
385
409
  *
package/lib/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Constructor } from '@spinajs/di';
3
3
  import { SelectQueryBuilder } from './builders';
4
4
  import { IModelBase, ModelBase } from './model';
5
5
  import { Orm } from './orm';
6
+ import { OrmDriver } from './driver';
6
7
  export interface IOrmRelation {
7
8
  /**
8
9
  * Executes relation, should be called only once.
@@ -99,12 +100,14 @@ export declare class SingleRelation<R extends IModelBase> implements IRelation {
99
100
  */
100
101
  export declare abstract class Relation<R extends ModelBase, O extends ModelBase> extends Array<R> implements IRelation {
101
102
  protected owner: O;
102
- protected model: Constructor<R> | ForwardRefFunction;
103
+ protected Model: Constructor<R> | ForwardRefFunction;
103
104
  protected Relation: IRelationDescriptor;
104
105
  TargetModelDescriptor: IModelDescriptor;
105
106
  protected Orm: Orm;
106
107
  Populated: boolean;
107
- constructor(owner: O, model: Constructor<R> | ForwardRefFunction, Relation: IRelationDescriptor, objects?: R[]);
108
+ protected Driver: OrmDriver;
109
+ protected IsModelAForwardRef: boolean;
110
+ constructor(owner: O, Model: Constructor<R> | ForwardRefFunction, Relation: IRelationDescriptor, objects?: R[]);
108
111
  /**
109
112
  * Removes from relation & deletes from db
110
113
  *
@@ -123,12 +126,39 @@ export declare abstract class Relation<R extends ModelBase, O extends ModelBase>
123
126
  */
124
127
  clear(): Promise<void>;
125
128
  empty(): void;
126
- abstract intersection(obj: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
127
- abstract union(obj: R[], mode?: InsertBehaviour): Promise<void>;
128
- abstract diff(obj: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
129
- abstract set(obj: R[]): Promise<void>;
130
129
  /**
131
- * Populates this relation
130
+ *
131
+ * Calculates intersection between data in this relation and provided dataset
132
+ * It saves result to db
133
+ *
134
+ * @param dataset - dataset to compare
135
+ * @param callback - function to compare models, if not set it is compared by primary key value
136
+ */
137
+ abstract intersection(dataset: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
138
+ /**
139
+ * Adds all items to this relation & adds to database
140
+ *
141
+ * @param dataset - data to add
142
+ * @param mode - insert mode
143
+ */
144
+ abstract union(dataset: R[], mode?: InsertBehaviour): Promise<void>;
145
+ /**
146
+ *
147
+ * Calculates difference between data in this relation and provides set. Result is saved to db.
148
+ *
149
+ * @param dataset - data to compare
150
+ * @param callback - function to compare objects, if none provideded - primary key value is used
151
+ */
152
+ abstract diff(dataset: R[], callback?: (a: R, b: R) => boolean): Promise<void>;
153
+ /**
154
+ *
155
+ * Clears data and replace it with new dataset.
156
+ *
157
+ * @param dataset - data for replace.
158
+ */
159
+ abstract set(dataset: R[]): Promise<void>;
160
+ /**
161
+ * Populates this relation ( loads all data related to owner of this relation)
132
162
  */
133
163
  populate(callback?: (this: SelectQueryBuilder<this>) => void): Promise<void>;
134
164
  }
@@ -141,7 +171,8 @@ export declare class ManyToManyRelationList<T extends ModelBase, O extends Model
141
171
  add(obj: T | T[], mode?: InsertBehaviour): Promise<void>;
142
172
  }
143
173
  export declare class OneToManyRelationList<T extends ModelBase, O extends ModelBase> extends Relation<T, O> {
144
- diff(obj: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
174
+ protected deleteRelationData(data: T[]): Promise<void>;
175
+ diff(dataset: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
145
176
  set(obj: T[]): Promise<void>;
146
177
  intersection(obj: T[], callback?: (a: T, b: T) => boolean): Promise<void>;
147
178
  union(obj: T[], mode?: InsertBehaviour): Promise<void>;
package/lib/relations.js CHANGED
@@ -493,17 +493,21 @@ exports.SingleRelation = SingleRelation;
493
493
  * It allows to add / remove objects to relation
494
494
  */
495
495
  class Relation extends Array {
496
- constructor(owner, model, Relation, objects) {
496
+ constructor(owner, Model, Relation, objects) {
497
497
  super();
498
498
  this.owner = owner;
499
- this.model = model;
499
+ this.Model = Model;
500
500
  this.Relation = Relation;
501
501
  this.Populated = false;
502
502
  if (objects) {
503
503
  this.push(...objects);
504
504
  }
505
- this.TargetModelDescriptor = (0, model_1.extractModelDescriptor)(model);
505
+ this.TargetModelDescriptor = (0, model_1.extractModelDescriptor)(Model);
506
506
  this.Orm = di_1.DI.get(orm_1.Orm);
507
+ if (this.TargetModelDescriptor) {
508
+ this.Driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
509
+ }
510
+ this.IsModelAForwardRef = !(0, di_1.isConstructor)(this.Model);
507
511
  }
508
512
  /**
509
513
  * Delete all objects from relation
@@ -515,7 +519,7 @@ class Relation extends Array {
515
519
  this.length = 0;
516
520
  }
517
521
  /**
518
- * Populates this relation
522
+ * Populates this relation ( loads all data related to owner of this relation)
519
523
  */
520
524
  async populate(callback) {
521
525
  const query = this.Relation.TargetModel.where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
@@ -547,17 +551,16 @@ class ManyToManyRelationList extends Relation {
547
551
  async remove(obj) {
548
552
  const self = this;
549
553
  const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
550
- const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
551
554
  const jmodelDescriptor = (0, model_1.extractModelDescriptor)(this.Relation.JunctionModel);
552
- if (!driver) {
553
- throw new exceptions_1.InvalidArgument(`connection ${this.TargetModelDescriptor.Connection} not exists`);
554
- }
555
- const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.JunctionModel])
555
+ const query = this.Driver.del()
556
556
  .from(jmodelDescriptor.TableName)
557
557
  .where(function () {
558
558
  this.whereIn(self.Relation.JunctionModelTargetModelFKey_Name, data);
559
559
  this.andWhere(self.Relation.JunctionModelSourceModelFKey_Name, self.owner.PrimaryKeyValue);
560
560
  });
561
+ if (this.Driver.Options.Database) {
562
+ query.database(this.Driver.Options.Database);
563
+ }
561
564
  await query;
562
565
  _.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
563
566
  }
@@ -577,77 +580,50 @@ class ManyToManyRelationList extends Relation {
577
580
  }
578
581
  exports.ManyToManyRelationList = ManyToManyRelationList;
579
582
  class OneToManyRelationList extends Relation {
580
- async diff(obj, callback) {
581
- const result = callback ? _.differenceWith(obj, [...this], callback) : _.differenceBy(obj, [...this], this.TargetModelDescriptor.PrimaryKey);
582
- const result2 = callback ? _.differenceWith([...this], obj, callback) : _.differenceBy([...this], obj, this.TargetModelDescriptor.PrimaryKey);
583
- const finalDiff = [...result, ...result2];
583
+ async deleteRelationData(data) {
584
+ if (data.length === 0) {
585
+ return;
586
+ }
584
587
  const self = this;
585
- const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
586
- const relData = finalDiff.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue);
587
- const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.TargetModel]).andWhere(function () {
588
- if (relData.length !== 0) {
589
- this.whereNotIn(self.Relation.PrimaryKey, relData);
590
- }
588
+ const query = this.Driver.del()
589
+ .from(this.TargetModelDescriptor.TableName)
590
+ .andWhere(function () {
591
+ this.whereNotIn(self.Relation.PrimaryKey, data.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue));
591
592
  this.where(self.Relation.ForeignKey, self.owner.PrimaryKeyValue);
592
593
  });
593
- query.setTable(this.TargetModelDescriptor.TableName);
594
- if (driver.Options.Database) {
595
- query.database(driver.Options.Database);
594
+ if (this.Driver.Options.Database) {
595
+ query.database(this.Driver.Options.Database);
596
596
  }
597
597
  await query;
598
598
  this.empty();
599
- await this.add(finalDiff), interfaces_1.InsertBehaviour.InsertOrUpdate;
599
+ }
600
+ async diff(dataset, callback) {
601
+ // calculate difference between this data in relation and dataset ( objects from this relation)
602
+ const result = callback ? _.differenceWith(dataset, [...this], callback) : _.differenceBy(dataset, [...this], this.TargetModelDescriptor.PrimaryKey);
603
+ // calculate difference between dataset and data in this relation ( objects from dataset )
604
+ const result2 = callback ? _.differenceWith([...this], dataset, callback) : _.differenceBy([...this], dataset, this.TargetModelDescriptor.PrimaryKey);
605
+ // combine difference from two sets
606
+ const finalDiff = [...result, ...result2];
607
+ await this.deleteRelationData(finalDiff);
608
+ await this.add(finalDiff, interfaces_1.InsertBehaviour.InsertOrUpdate);
600
609
  }
601
610
  async set(obj) {
602
- const self = this;
603
- const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
604
- const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.TargetModel]).andWhere(function () {
605
- const relData = obj.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue);
606
- if (relData.length !== 0) {
607
- this.whereNotIn(self.Relation.PrimaryKey, relData);
608
- }
609
- this.where(self.Relation.ForeignKey, self.owner.PrimaryKeyValue);
610
- });
611
- query.setTable(this.TargetModelDescriptor.TableName);
612
- if (driver.Options.Database) {
613
- query.database(driver.Options.Database);
614
- }
615
- await query;
616
- this.empty();
611
+ await this.deleteRelationData(obj);
617
612
  await this.add(obj, interfaces_1.InsertBehaviour.InsertOrUpdate);
618
613
  }
619
614
  async intersection(obj, callback) {
620
- const self = this;
621
615
  const result = callback ? _.intersectionWith(obj, [...this], callback) : _.intersectionBy(obj, [...this], this.TargetModelDescriptor.PrimaryKey);
622
- const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
623
- const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.TargetModel]).andWhere(function () {
624
- const relData = result.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue);
625
- if (relData.length !== 0) {
626
- this.whereNotIn(self.Relation.PrimaryKey, relData);
627
- }
628
- this.where(self.Relation.ForeignKey, self.owner.PrimaryKeyValue);
629
- });
630
- query.setTable(this.TargetModelDescriptor.TableName);
631
- if (driver.Options.Database) {
632
- query.database(driver.Options.Database);
633
- }
634
- await query;
635
- this.empty();
616
+ await this.deleteRelationData(result);
636
617
  await this.add(result, interfaces_1.InsertBehaviour.InsertOrUpdate);
637
618
  }
638
619
  async union(obj, mode) {
639
- await this.add(obj, mode);
620
+ await this.add(obj, mode !== null && mode !== void 0 ? mode : interfaces_1.InsertBehaviour.InsertOrIgnore);
640
621
  }
641
622
  async remove(obj) {
642
623
  const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
643
- const driver = this.Orm.Connections.get(this.TargetModelDescriptor.Connection);
644
- if (!driver) {
645
- throw new exceptions_1.InvalidArgument(`connection ${this.TargetModelDescriptor.Connection} not exists`);
646
- }
647
- const query = driver.Container.resolve(builders_1.DeleteQueryBuilder, [driver, this.Relation.TargetModel]).whereIn(this.Relation.ForeignKey, data);
648
- query.setTable(this.TargetModelDescriptor.TableName);
649
- if (driver.Options.Database) {
650
- query.database(driver.Options.Database);
624
+ const query = this.Driver.del().whereIn(this.Relation.ForeignKey, data).setTable(this.TargetModelDescriptor.TableName);
625
+ if (this.Driver.Options.Database) {
626
+ query.database(this.Driver.Options.Database);
651
627
  }
652
628
  await query;
653
629
  _.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
@@ -658,21 +634,16 @@ class OneToManyRelationList extends Relation {
658
634
  if (x instanceof model_1.ModelBase) {
659
635
  return x;
660
636
  }
661
- if (_.isFunction(this.model)) {
662
- return new (this.model())(x);
637
+ if (this.IsModelAForwardRef) {
638
+ new (this.Model())(x);
663
639
  }
664
- return new this.model(x);
640
+ return new this.Model(x);
665
641
  });
666
642
  data.forEach((d) => {
667
643
  d[this.Relation.ForeignKey] = this.owner.PrimaryKeyValue;
668
644
  });
669
- for (const m of data) {
670
- if (m.PrimaryKeyValue) {
671
- await m.update();
672
- }
673
- else {
674
- await m.insert(mode);
675
- }
645
+ for (const m of tInsert) {
646
+ await m.insertOrUpdate(mode);
676
647
  }
677
648
  this.push(...tInsert);
678
649
  }