UNPKG

magic-models

Version:

A simple, free software magical ORM.

67 lines (63 loc) 1.64 kB
var each = require('each'); module.exports.escapeValue = function(orm, value) { return '"' + (typeof(value) == 'string' ? orm.client.escape(value) : value + '') + '"'; } module.exports.validate = function(orm, model, data, errors, callback) { each(model.fields) .on('item', function(fieldName, field, cb) { if (field.validate) { each(field.validate) .on('item', function(rule, i, cb) { if (data[fieldName] === undefined) { cb(); } else { var message = rule.msg || 'Rule "' + rule.name + '" for field `' + fieldName + '` has not been successfully validated.'; rule.fun({ data: data, model: model, checkedField: { name: fieldName, val: data[fieldName] }, rule: { name: rule.name, val: rule.val }, msg: message }, function(check) { if (!check) errors.push(message); cb(); }); } }) .on('end', function() { cb(); }); } else cb(); }) .on('end', function() { if (errors.length > 0) callback(undefined, errors); else callback(true); }); } module.exports.validateAll = function(orm, model, data, callback) { var errors = []; each(model.fields) .on('item', function(fieldName, field, cb) { if (field.required && (data[fieldName] === undefined || data[fieldName] === null)) { var message = typeof(field.required) != 'string' ? 'Field `' + fieldName + '` is required.' : field.required; errors.push(message); } cb(); }) .on('end', function() { module.exports.validate(orm, model, data, errors, callback); }); }