mythix-orm 1.7.1 → 1.7.2

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.
@@ -1004,27 +1004,43 @@ class ConnectionBase extends EventEmitter {
1004
1004
  this.removeAllListeners();
1005
1005
  }
1006
1006
 
1007
- async runSaveHooks(Model, models, operationHookName, saveHookName, options) {
1007
+ async runSaveHooks(Model, models, operationHookName, saveHookName, _options) {
1008
1008
  const throwError = (error) => {
1009
1009
  throw error;
1010
1010
  };
1011
1011
 
1012
+ let options = _options || {};
1012
1013
  let promises = [];
1013
1014
  let context = { connection: this, Model, options, self: null };
1015
+ let skipHooks = options.skipHooks;
1014
1016
 
1015
- for (let i = 0, il = models.length; i < il; i++) {
1016
- let model = models[i];
1017
+ const shouldSkipHook = (hookName) => {
1018
+ if (!skipHooks)
1019
+ return false;
1017
1020
 
1018
- context.self = model;
1021
+ if (skipHooks === true)
1022
+ return true;
1019
1023
 
1020
- let promise = model[operationHookName](context);
1021
- if (!Nife.instanceOf(promise, 'promise'))
1022
- promise = Promise.resolve(promise);
1024
+ if (skipHooks[hookName] === true)
1025
+ return true;
1023
1026
 
1024
- promise = promise.then(async () => await model[saveHookName](context), throwError);
1027
+ return false;
1028
+ };
1029
+
1030
+ for (let i = 0, il = models.length; i < il; i++) {
1031
+ let model = models[i];
1032
+ let modelContext = { ...context, self: model };
1033
+
1034
+ let promise = (shouldSkipHook(operationHookName)) ? undefined : model[operationHookName](modelContext);
1025
1035
  if (!Nife.instanceOf(promise, 'promise'))
1026
1036
  promise = Promise.resolve(promise);
1027
1037
 
1038
+ if (!shouldSkipHook(saveHookName)) {
1039
+ promise = promise.then(async () => await model[saveHookName](modelContext), throwError);
1040
+ if (!Nife.instanceOf(promise, 'promise'))
1041
+ promise = Promise.resolve(promise);
1042
+ }
1043
+
1028
1044
  promises.push(promise);
1029
1045
  }
1030
1046
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mythix-orm",
3
- "version": "1.7.1",
3
+ "version": "1.7.2",
4
4
  "description": "ORM for Mythix framework",
5
5
  "main": "lib/index",
6
6
  "type": "commonjs",