@decaf-ts/db-decorators
Version:
Agnostic database decorators and repository
33 lines • 1.5 kB
JavaScript
import { Model, validate, } from "@decaf-ts/decorator-validation";
import { validateCompare } from "./validation.js";
/**
* @description Validates the model and checks for errors
* @summary Validates the current model state and optionally compares with a previous version
* @template M - Type extending Model
* @param {M|any} [previousVersion] - Optional previous version of the model for comparison
* @param {...any[]} exclusions - Properties to exclude from validation
* @return {ModelErrorDefinition|undefined} Error definition if validation fails, undefined otherwise
* @function hasErrors
* @memberOf module:db-decorators
*/
Model.prototype.hasErrors = function (previousVersion, ...exclusions) {
if (previousVersion && !(previousVersion instanceof Model)) {
exclusions.unshift(previousVersion);
previousVersion = undefined;
}
const async = this.isAsync();
const errs = validate(this, async, ...exclusions);
if (async) {
return Promise.resolve(errs).then((resolvedErrs) => {
if (resolvedErrs || !previousVersion) {
return resolvedErrs;
}
return validateCompare(previousVersion, this, async, ...exclusions);
});
}
if (errs || !previousVersion)
return errs;
// @ts-expect-error Overriding Model prototype method with dynamic conditional return type.
return validateCompare(previousVersion, this, async, ...exclusions);
};
//# sourceMappingURL=overrides.js.map