11const { extractValue, dataTypeCheck } = require ( "./utils" ) ;
22
3- const validate = ( rules ) => {
4- return ( req , res , next ) => {
5- let error_messages = [ ] ;
6- rules . forEach ( rule => {
7- let value = extractValue ( req , rule ) ;
8- if ( ! value ) {
9- error_messages . push ( rule . message || `Invalid ${ rule . key } , value not found in ${ rule . from } ` ) ;
10- return ;
11- }
12- if ( rule . datatype && ! dataTypeCheck ( rule . datatype , value ) ) {
13- error_messages . push ( rule . message || `Invalid ${ rule . key } , required a ${ rule . datatype } value` ) ;
14- return ;
15- }
16- if ( rule . validation_function && ! rule . validation_function ( value ) ) {
17- error_messages . push ( rule . message || `Invalid ${ rule . key } ` ) ;
18- }
19- } ) ;
20- if ( error_messages ) {
21- res . status ( 400 ) ;
22- res . send ( { error_messages } ) ;
23- } else {
24- next ( ) ;
25- }
3+ const validate = rules => {
4+ return ( req , res , next ) => {
5+ let error_messages = [ ] ;
6+ rules . forEach ( rule => {
7+ let value = extractValue ( req , rule ) ;
8+ if ( rule . is_optional && ! value ) {
9+ return ;
10+ }
11+ if ( ! value ) {
12+ error_messages . push ( rule . message || `Invalid ${ rule . key } , value not found in ${ rule . from } ` ) ;
13+ return ;
14+ }
15+ if ( rule . datatype && ! dataTypeCheck ( rule . datatype , value ) ) {
16+ error_messages . push (
17+ rule . message ||
18+ `Invalid ${ rule . key } , required a ${ rule . datatype } value`
19+ ) ;
20+ return ;
21+ }
22+ if ( rule . validation_function && ! rule . validation_function ( value ) ) {
23+ error_messages . push ( rule . message || `Invalid ${ rule . key } ` ) ;
24+ }
25+ } ) ;
26+ if ( error_messages . length > 0 ) {
27+ res . status ( 400 ) ;
28+ res . send ( { error_messages } ) ;
29+ } else {
30+ next ( ) ;
2631 }
27- }
32+ } ;
33+ } ;
2834
29- exports . validate = validate ;
35+ exports . validate = validate ;
0 commit comments