mythix-orm 1.7.0 → 1.7.1
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.
|
@@ -900,7 +900,7 @@ class ConnectionBase extends EventEmitter {
|
|
|
900
900
|
if (batchModels) {
|
|
901
901
|
for (let i = 0, il = batchModels.length; i < il; i++) {
|
|
902
902
|
let batchModel = batchModels[i];
|
|
903
|
-
batchModel.clearDirty();
|
|
903
|
+
// batchModel.clearDirty();
|
|
904
904
|
finalResults.push(batchModel);
|
|
905
905
|
}
|
|
906
906
|
}
|
|
@@ -922,6 +922,7 @@ class ConnectionBase extends EventEmitter {
|
|
|
922
922
|
let groupedModelMap = this.prepareAllModelsAndSubModelsForOperation(Model, models, options);
|
|
923
923
|
let alreadyStored = {};
|
|
924
924
|
let allDirtyModels = new Set();
|
|
925
|
+
let allStoredModels = new Set();
|
|
925
926
|
let primaryResult;
|
|
926
927
|
|
|
927
928
|
for (let [ modelName, models ] of groupedModelMap) {
|
|
@@ -941,6 +942,8 @@ class ConnectionBase extends EventEmitter {
|
|
|
941
942
|
primaryResult = results;
|
|
942
943
|
|
|
943
944
|
for (let storedModel of results) {
|
|
945
|
+
allStoredModels.add(storedModel);
|
|
946
|
+
|
|
944
947
|
for (let [ groupModelName, groupModels ] of groupedModelMap) {
|
|
945
948
|
if (groupModelName === modelName)
|
|
946
949
|
continue;
|
|
@@ -953,9 +956,8 @@ class ConnectionBase extends EventEmitter {
|
|
|
953
956
|
continue;
|
|
954
957
|
|
|
955
958
|
for (let targetModel of groupModels) {
|
|
956
|
-
Utils.setRelationalValues(this, TargetModel, targetModel, GroupModel, storedModel);
|
|
957
|
-
|
|
958
|
-
if (targetModel.isDirty())
|
|
959
|
+
let hasChanges = Utils.setRelationalValues(this, TargetModel, targetModel, GroupModel, storedModel);
|
|
960
|
+
if (hasChanges)
|
|
959
961
|
allDirtyModels.add(targetModel);
|
|
960
962
|
}
|
|
961
963
|
}
|
|
@@ -968,6 +970,12 @@ class ConnectionBase extends EventEmitter {
|
|
|
968
970
|
if (allDirtyModels.size > 0 && typeof afterOperationCallback === 'function')
|
|
969
971
|
await afterOperationCallback.call(this, Model, allDirtyModels, options, queryGenerator);
|
|
970
972
|
|
|
973
|
+
// Now mark all models as clean and persisted
|
|
974
|
+
for (let storedModel of allStoredModels) {
|
|
975
|
+
storedModel.clearDirty();
|
|
976
|
+
storedModel._persisted = true;
|
|
977
|
+
}
|
|
978
|
+
|
|
971
979
|
return (inputIsArray || !primaryResult) ? primaryResult : primaryResult[0];
|
|
972
980
|
}
|
|
973
981
|
|
|
@@ -18,7 +18,7 @@ export declare interface RelationStatus {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export declare interface ModelsRelationStatuses {
|
|
21
|
-
[
|
|
21
|
+
[key: string]: RelationStatus
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export declare function isUUID(value: any): boolean;
|
|
@@ -70,7 +70,7 @@ export declare function setRelationalValues<T extends Model = Model>(
|
|
|
70
70
|
targetModelInstance: T,
|
|
71
71
|
SourceModel: ModelClass,
|
|
72
72
|
sourceModelInstance: Model,
|
|
73
|
-
):
|
|
73
|
+
): boolean;
|
|
74
74
|
|
|
75
75
|
export declare function assignRelatedModels(model: Model, relatedModels: Model | Array<Model>): void;
|
|
76
76
|
export declare function getPrimaryKeysForModels(
|
|
@@ -81,7 +81,7 @@ export declare function getPrimaryKeysForModels(
|
|
|
81
81
|
includeRelations?: boolean | Array<string>,
|
|
82
82
|
skipRelations?: Array<string>,
|
|
83
83
|
},
|
|
84
|
-
): Array<any> | { [
|
|
84
|
+
): Array<any> | { [key: string]: Array<any> };
|
|
85
85
|
|
|
86
86
|
export declare function buildQueryFromModelsAttributes(
|
|
87
87
|
connection: ConnectionBase,
|
package/lib/utils/model-utils.js
CHANGED
|
@@ -531,9 +531,10 @@ function setRelationalValues(connection, TargetModel, targetModelInstance, Sourc
|
|
|
531
531
|
let sourceModelName = SourceModel.getModelName();
|
|
532
532
|
|
|
533
533
|
if (targetModelName === sourceModelName)
|
|
534
|
-
return
|
|
534
|
+
return false;
|
|
535
535
|
|
|
536
|
-
let fieldSets
|
|
536
|
+
let fieldSets = TargetModel.getForeignKeysTargetFieldNames(connection, sourceModelName);
|
|
537
|
+
let hasChanges = false;
|
|
537
538
|
|
|
538
539
|
// Update fields to related model
|
|
539
540
|
for (let i = 0, il = fieldSets.length; i < il; i++) {
|
|
@@ -548,10 +549,13 @@ function setRelationalValues(connection, TargetModel, targetModelInstance, Sourc
|
|
|
548
549
|
let sourceFieldName = fieldSet.targetFieldName;
|
|
549
550
|
let sourceModelValue = (sourceModelInstance) ? sourceModelInstance[sourceFieldName] : null;
|
|
550
551
|
|
|
551
|
-
targetModelInstance[targetFieldName]
|
|
552
|
+
if (targetModelInstance[targetFieldName] !== sourceModelValue) {
|
|
553
|
+
targetModelInstance[targetFieldName] = sourceModelValue;
|
|
554
|
+
hasChanges = true;
|
|
555
|
+
}
|
|
552
556
|
}
|
|
553
557
|
|
|
554
|
-
return
|
|
558
|
+
return hasChanges;
|
|
555
559
|
}
|
|
556
560
|
|
|
557
561
|
function assignRelatedModels(model, _relatedModels) {
|