1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- const clone = require('./modelClone').clone;
- const { defineNonEnumerableProperty } = require('./modelUtils');
- function validate(model, json, options = {}) {
- json = json || model;
- const inputJson = json;
- const validatingModelInstance = inputJson && inputJson.$isObjectionModel;
- if (options.skipValidation) {
- return json;
- }
- if (validatingModelInstance) {
- // Strip away relations and other internal stuff.
- json = clone(json, true, true);
- // We can mutate `json` now that we took a copy of it.
- options = Object.assign({}, options, { mutable: true });
- }
- const ModelClass = model.constructor;
- const validator = ModelClass.getValidator();
- const args = {
- options,
- model,
- json,
- ctx: Object.create(null)
- };
- validator.beforeValidate(args);
- json = validator.validate(args);
- validator.afterValidate(args);
- if (validatingModelInstance) {
- // If we cloned `json`, we need to copy the possible default values.
- return inputJson.$set(json);
- } else {
- return json;
- }
- }
- module.exports = {
- validate
- };
|