salix/services/client/server/boot/validations.js

53 lines
1.4 KiB
JavaScript

module.exports = function (app) {
function toJson(object) {
let json = {};
for(let prop in object) {
let value = object[prop];
switch(typeof value) {
case 'object':
if(value instanceof RegExp)
json[prop] = value.source;
break;
case 'function':
json[prop] = value.toString();
break;
default:
json[prop] = value;
}
}
return json;
}
app.get('/validations', function (req, res) {
let json = {};
let models = app.models;
for(let modelName in models) {
let model = models[modelName];
let validations = model.validations;
let jsonValidations = {};
for(let fieldName in validations) {
let jsonField = [];
for(let validation of validations[fieldName])
jsonField.push(toJson(validation));
jsonValidations[fieldName] = jsonField;
}
json[modelName] = {
properties: model.definition.rawProperties,
validations: jsonValidations
};
}
res.set('Content-Type', 'application/json');
res.send(JSON.stringify(json));
})
};