-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
35 lines (33 loc) · 980 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const { extractValue, dataTypeCheck } = require("./utils");
const validate = rules => {
return (req, res, next) => {
let error_messages = [];
rules.forEach(rule => {
let value = extractValue(req, rule);
if (rule.is_optional && !value) {
return;
}
if (!value) {
error_messages.push(rule.message || `Invalid ${rule.key}, value not found in ${rule.from}`);
return;
}
if (rule.datatype && !dataTypeCheck(rule.datatype, value)) {
error_messages.push(
rule.message ||
`Invalid ${rule.key}, required a ${rule.datatype} value`
);
return;
}
if (rule.validation_function && !rule.validation_function(value)) {
error_messages.push(rule.message || `Invalid ${rule.key}`);
}
});
if (error_messages.length > 0) {
res.status(400);
res.send({ error_messages });
} else {
next();
}
};
};
exports.validate = validate;