jcc-express-mvc 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,168 @@
1
+ const validator = require("validator");
2
+ const { capitalize, getModel } = require("../helpers");
3
+
4
+ class ValidationMethod {
5
+ //
6
+ required(fieldName, value) {
7
+ return validator.default.isEmpty(value)
8
+ ? `${capitalize(fieldName)} is required`
9
+ : false;
10
+ }
11
+ //
12
+ min(fieldName, fieldValue, minValue) {
13
+ return !validator.default.isLength(fieldValue, { min: minValue })
14
+ ? `${capitalize(fieldName)} should be minimum of ${minValue} ${
15
+ minValue <= 1 ? "character" : "characters"
16
+ }`
17
+ : false;
18
+ }
19
+
20
+ //
21
+ max(fieldName, fieldValue, maxValue) {
22
+ return !validator.default.isLength(fieldValue, { max: maxValue })
23
+ ? `${capitalize(fieldName)} should be maximum of ${maxValue} ${
24
+ maxValue <= 1 ? "character" : "characters"
25
+ }`
26
+ : false;
27
+ }
28
+
29
+ email(fieldValue) {
30
+ return !validator.default.isEmail(fieldValue) ? ` Invalid email` : false;
31
+ }
32
+
33
+ bool(fieldName, fieldValue) {
34
+ return !validator.default.isBoolean(fieldValue)
35
+ ? `${capitalize(fieldName)} should be a boolean`
36
+ : false;
37
+ }
38
+
39
+ float(fieldName, fieldValue) {
40
+ return !validator.default.default.isFloat(fieldValue)
41
+ ? `${capitalize(fieldName)} should be a float`
42
+ : false;
43
+ }
44
+
45
+ num(fieldName, fieldValue) {
46
+ return !validator.default.isNumeric(fieldValue)
47
+ ? `${capitalize(fieldName)} should only be a number`
48
+ : false;
49
+ }
50
+
51
+ alpha(fieldName, fieldValue) {
52
+ return !validator.default.isAlpha(fieldValue)
53
+ ? `${capitalize(fieldName)} should only contain letters`
54
+ : false;
55
+ }
56
+
57
+ alphaNum = (fieldName, fieldValue) => {
58
+ return !validator.default.isAlphanumeric(fieldValue)
59
+ ? `${capitalize(fieldName)} should only contain letters and numbers`
60
+ : false;
61
+ };
62
+
63
+ same(fieldNames = [], fieldValues = []) {
64
+ let [firstFieldName, secondFieldName] = fieldNames;
65
+ let [firstValue, secondValue] = fieldValues;
66
+ return validator.default.equals(firstValue, secondValue)
67
+ ? false
68
+ : `${capitalize(firstFieldName)} did not match with ${capitalize(
69
+ secondFieldName
70
+ )}`;
71
+ }
72
+
73
+ creditCard(fieldName, fieldValue) {
74
+ return !validator.default.isCreditCard(fieldValue)
75
+ ? `${capitalize(fieldName)} invalid credit card`
76
+ : false;
77
+ }
78
+
79
+ url(fieldName, fieldValue) {
80
+ return !validator.default.isURL(fieldValue)
81
+ ? `${capitalize(fieldName)} invalid url`
82
+ : false;
83
+ }
84
+
85
+ decimal(fieldName, fieldValue) {
86
+ return !validator.default.isDecimal(fieldValue)
87
+ ? `${capitalize(fieldName)} should be a decimal number`
88
+ : false;
89
+ }
90
+
91
+ int(fieldName, fieldValue) {
92
+ return !validator.default.isInt(fieldValue)
93
+ ? `${capitalize(fieldName)} should be an integer`
94
+ : false;
95
+ }
96
+
97
+ json(fieldName, fieldValue) {
98
+ return !validator.default.isJSON(fieldValue)
99
+ ? `${capitalize(fieldName)} invalid json`
100
+ : false;
101
+ }
102
+
103
+ async unqiue(fieldName, fieldValue, model) {
104
+ try {
105
+ console.log(fieldName);
106
+ let modelName = getModel(`${capitalize(model)}`);
107
+ return (await modelName.findOne({ [fieldName]: fieldValue }))
108
+ ? `${capitalize(fieldName)} already exist`
109
+ : false;
110
+ } catch (e) {
111
+ console.log("db error", e.message);
112
+ }
113
+ }
114
+
115
+ jwt(fieldName, fieldValue) {
116
+ return validator.default.isJWT(fieldValue)
117
+ ? `${capitalize(fieldName)} invalid jwt`
118
+ : false;
119
+ }
120
+
121
+ postal(fieldName, fieldValue) {
122
+ return !validator.default.isPostalCode(fieldValue)
123
+ ? `${capitalize(fieldName)} invalid postal code`
124
+ : false;
125
+ }
126
+
127
+ nullable() {
128
+ return false;
129
+ }
130
+
131
+ phone(fieldName, fieldValue) {
132
+ return !validator.default.isMobilePhone(fieldValue)
133
+ ? `${capitalize(fieldName)} invalid phone number`
134
+ : false;
135
+ }
136
+
137
+ slug(fieldName, fieldValue) {
138
+ return !validator.default.isSlug(fieldValue)
139
+ ? `${capitalize(fieldName)} invalid slug`
140
+ : false;
141
+ }
142
+
143
+ skip() {
144
+ return false;
145
+ }
146
+
147
+ mongoId = (fieldName, fieldValue) => {
148
+ return !validator.default.isMongoId(fieldValue)
149
+ ? `${capitalize(fieldName)} invalid mongodb id`
150
+ : false;
151
+ };
152
+
153
+ request(req, data) {
154
+ return req.body[data] ? req.body[data] : "";
155
+ }
156
+
157
+ extractValue(data, index) {
158
+ return data.split(":")[index].replace(/\s/g, "");
159
+ }
160
+
161
+ secondValue(data) {
162
+ return (
163
+ data.includes("min:") || data.includes("max:") || data.includes("unique:")
164
+ );
165
+ }
166
+ }
167
+
168
+ module.exports = new ValidationMethod();
@@ -0,0 +1,92 @@
1
+ const ValidationMethod = require("./method");
2
+ exports.rules = async (validation, fieldName, fieldValue, secondValue) => {
3
+ try {
4
+ switch (validation) {
5
+ case "required":
6
+ return ValidationMethod.required(fieldName, fieldValue);
7
+
8
+ case "min" || "min:":
9
+ return ValidationMethod.min(fieldName, fieldValue, Number(secondValue));
10
+
11
+ case "max":
12
+ return ValidationMethod.max(fieldName, fieldValue, Number(secondValue));
13
+
14
+ case "email":
15
+ return ValidationMethod.email(fieldValue);
16
+
17
+ case "unique":
18
+ return await ValidationMethod.unqiue(
19
+ fieldName,
20
+ fieldValue,
21
+ secondValue
22
+ );
23
+
24
+ case "same":
25
+ return ValidationMethod.same(fieldName, fieldValue);
26
+
27
+ case "alpha":
28
+ return ValidationMethod.alpha(fieldName, fieldValue);
29
+
30
+ case "alphaNum":
31
+ return ValidationMethod.alphaNum(fieldName, fieldValue);
32
+
33
+ case "num":
34
+ return ValidationMethod.num(fieldName, fieldValue);
35
+
36
+ case "bool":
37
+ return ValidationMethod.bool(fieldName, fieldValue);
38
+
39
+ case "float":
40
+ return ValidationMethod.float(fieldName, fieldValue);
41
+
42
+ case "int":
43
+ return ValidationMethod.int(fieldName, fieldValue);
44
+
45
+ case "decimal":
46
+ return ValidationMethod.decimal(fieldName, fieldValue);
47
+
48
+ case "jwt":
49
+ return ValidationMethod.jwt(fieldName, fieldValue);
50
+
51
+ case "json":
52
+ return ValidationMethod.json(fieldName, fieldValue);
53
+
54
+ case "postal":
55
+ return ValidationMethod.postal(fieldName, fieldValue);
56
+
57
+ case "slug":
58
+ return ValidationMethod.slug(fieldName, fieldValue);
59
+
60
+ case "url":
61
+ return ValidationMethod.url(fieldName, fieldValue);
62
+
63
+ case "creditCard":
64
+ return ValidationMethod.creditCard(fieldName, fieldValue);
65
+
66
+ case "mongoId":
67
+ return ValidationMethod.mongoId(fieldValue);
68
+
69
+ case "nullable":
70
+ return ValidationMethod.nullable(fieldName);
71
+
72
+ case "phone":
73
+ return ValidationMethod.phone(fieldName, fieldValue);
74
+
75
+ case "skip":
76
+ return ValidationMethod.skip();
77
+
78
+ default:
79
+ // return `${validation}() invalid method`;
80
+ let err = new Error(
81
+ "validation method",
82
+ `${validation}() invalid method`
83
+ );
84
+ err.validationMethod = `${validation}() invalid method`;
85
+ throw err;
86
+ }
87
+ } catch (error) {
88
+ let err = new Error("validation error", error);
89
+ err.validationMethod = error.message;
90
+ throw err;
91
+ }
92
+ };