params_checker 0.2.2 → 0.2.3
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.
- checksums.yaml +4 -4
- data/README.md +1168 -5
- data/lib/params_checker/base_params_checker.rb +186 -161
- data/lib/params_checker/constants.rb +45 -0
- data/lib/params_checker/engine.rb +4 -0
- data/lib/params_checker/field_error.rb +11 -0
- data/lib/params_checker/fields.rb +242 -160
- data/lib/params_checker/{my_error.rb → general_error.rb} +2 -2
- data/lib/params_checker/helper.rb +21 -0
- data/lib/params_checker/param_checker.rb +312 -298
- data/lib/params_checker/version.rb +1 -1
- data/lib/params_checker.rb +9 -7
- metadata +19 -10
- data/app/assets/config/params_checker_manifest.js +0 -1
- data/app/assets/stylesheets/params_checker/application.css +0 -15
- data/app/controllers/params_checker/application_controller.rb +0 -5
- data/app/helpers/params_checker/application_helper.rb +0 -4
- data/app/jobs/params_checker/application_job.rb +0 -4
- data/app/mailers/params_checker/application_mailer.rb +0 -6
- data/app/models/params_checker/application_record.rb +0 -5
- data/app/views/layouts/params_checker/application.html.erb +0 -15
@@ -1,228 +1,310 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ParamsChecker
|
4
4
|
module Fields
|
5
|
-
def text_field(
|
6
|
-
|
7
|
-
|
5
|
+
def text_field(
|
6
|
+
required: true,
|
7
|
+
default: nil,
|
8
|
+
allow_blank: false,
|
9
|
+
min_length: 0,
|
10
|
+
max_length: 30_000,
|
11
|
+
allow_nil: false
|
12
|
+
)
|
13
|
+
Helper.check_type(type: 'integer', values: [min_length, max_length])
|
14
|
+
Helper.check_type(type: 'boolean', values: [required, allow_blank, allow_nil])
|
8
15
|
raise 'Invalid text length.' unless (min_length >= 0) && (max_length <= 30_000)
|
9
|
-
|
16
|
+
|
10
17
|
{
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
type: 'char',
|
19
|
+
default: default,
|
20
|
+
allow_blank: allow_blank,
|
21
|
+
required: required,
|
22
|
+
min_length: min_length,
|
23
|
+
max_length: max_length,
|
24
|
+
allow_nil: allow_nil
|
18
25
|
}
|
19
26
|
end
|
20
|
-
|
21
|
-
def char_field(
|
22
|
-
|
23
|
-
|
27
|
+
|
28
|
+
def char_field(
|
29
|
+
required: true,
|
30
|
+
default: nil,
|
31
|
+
allow_blank: false,
|
32
|
+
min_length: 0,
|
33
|
+
max_length: 255,
|
34
|
+
allow_nil: false
|
35
|
+
)
|
36
|
+
Helper.check_type(type: 'integer', values: [min_length, max_length])
|
37
|
+
Helper.check_type(type: 'boolean', values: [required, allow_blank, allow_nil])
|
24
38
|
raise 'Invalid char length.' unless (min_length >= 0) && (max_length <= 255)
|
25
|
-
|
39
|
+
|
26
40
|
{
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
41
|
+
type: 'char',
|
42
|
+
default: default,
|
43
|
+
allow_blank: allow_blank,
|
44
|
+
required: required,
|
45
|
+
min_length: min_length,
|
46
|
+
max_length: max_length,
|
47
|
+
allow_nil: allow_nil
|
34
48
|
}
|
35
49
|
end
|
36
|
-
|
37
|
-
def bignum_field(
|
38
|
-
|
39
|
-
|
50
|
+
|
51
|
+
def bignum_field(
|
52
|
+
required: true,
|
53
|
+
default: nil,
|
54
|
+
min: -2_000_000_000_000,
|
55
|
+
max: 2_000_000_000_000,
|
56
|
+
allow_nil: false
|
57
|
+
)
|
58
|
+
Helper.check_type(type: 'numeric', values: [min, max])
|
59
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
40
60
|
raise 'Invalid numeric value.' unless (min >= -2_000_000_000_000) && (max <= 2_000_000_000_000)
|
41
|
-
|
61
|
+
|
42
62
|
{
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
63
|
+
type: 'num',
|
64
|
+
default: default,
|
65
|
+
required: required,
|
66
|
+
min: min,
|
67
|
+
max: max,
|
68
|
+
allow_nil: allow_nil
|
49
69
|
}
|
50
70
|
end
|
51
|
-
|
52
|
-
def num_field(
|
53
|
-
|
54
|
-
|
71
|
+
|
72
|
+
def num_field(
|
73
|
+
required: true,
|
74
|
+
default: nil,
|
75
|
+
min: -2_000_000_000,
|
76
|
+
max: 2_000_000_000,
|
77
|
+
allow_nil: false
|
78
|
+
)
|
79
|
+
Helper.check_type(type: 'numeric', values: [min, max])
|
80
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
55
81
|
raise 'Invalid numeric value.' unless (min >= -2_000_000_000) && (max <= 2_000_000_000)
|
56
|
-
|
82
|
+
|
57
83
|
{
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
84
|
+
type: 'num',
|
85
|
+
default: default,
|
86
|
+
required: required,
|
87
|
+
min: min,
|
88
|
+
max: max,
|
89
|
+
allow_nil: allow_nil
|
64
90
|
}
|
65
91
|
end
|
66
92
|
|
67
|
-
def bigint_field(
|
68
|
-
|
69
|
-
|
93
|
+
def bigint_field(
|
94
|
+
required: true,
|
95
|
+
default: nil,
|
96
|
+
min: -2_000_000_000_000,
|
97
|
+
max: 2_000_000_000_000,
|
98
|
+
allow_nil: false
|
99
|
+
)
|
100
|
+
Helper.check_type(type: 'integer', values: [min, max])
|
101
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
70
102
|
raise 'Invalid integer value.' unless (min >= -2_000_000_000_000) && (max <= 2_000_000_000_000)
|
71
|
-
|
103
|
+
|
72
104
|
{
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
105
|
+
type: 'int',
|
106
|
+
default: default,
|
107
|
+
required: required,
|
108
|
+
min: min,
|
109
|
+
max: max,
|
110
|
+
allow_nil: allow_nil
|
79
111
|
}
|
80
112
|
end
|
81
|
-
|
82
|
-
def int_field(
|
83
|
-
|
84
|
-
|
113
|
+
|
114
|
+
def int_field(
|
115
|
+
required: true,
|
116
|
+
default: nil,
|
117
|
+
min: -2_000_000_000,
|
118
|
+
max: 2_000_000_000,
|
119
|
+
allow_nil: false
|
120
|
+
)
|
121
|
+
Helper.check_type(type: 'integer', values: [min, max])
|
122
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
85
123
|
raise 'Invalid integer value.' unless (min >= -2_000_000_000) && (max <= 2_000_000_000)
|
86
|
-
|
124
|
+
|
87
125
|
{
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
126
|
+
type: 'int',
|
127
|
+
default: default,
|
128
|
+
required: required,
|
129
|
+
min: min,
|
130
|
+
max: max,
|
131
|
+
allow_nil: allow_nil
|
94
132
|
}
|
95
133
|
end
|
96
134
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
135
|
+
def positive_bignum_field(
|
136
|
+
required: true,
|
137
|
+
default: nil,
|
138
|
+
min: 0, max: 2_000_000_000_000,
|
139
|
+
allow_nil: false
|
140
|
+
)
|
141
|
+
Helper.check_type(type: 'numeric', values: [min, max])
|
142
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
102
143
|
raise 'Invalid numeric value.' unless (min >= 0) && (max <= 2_000_000_000_000)
|
103
|
-
|
144
|
+
|
104
145
|
{
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
146
|
+
type: 'num',
|
147
|
+
default: default,
|
148
|
+
required: required,
|
149
|
+
min: min,
|
150
|
+
max: max,
|
151
|
+
allow_nil: allow_nil
|
111
152
|
}
|
112
153
|
end
|
113
|
-
|
114
|
-
def positive_num_field(
|
115
|
-
|
116
|
-
|
154
|
+
|
155
|
+
def positive_num_field(
|
156
|
+
required: true,
|
157
|
+
default: nil,
|
158
|
+
min: 0,
|
159
|
+
max: 2_000_000_000,
|
160
|
+
allow_nil: false
|
161
|
+
)
|
162
|
+
Helper.check_type(type: 'numeric', values: [min, max])
|
163
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
117
164
|
raise 'Invalid numeric value.' unless (min >= 0) && (max <= 2_000_000_000)
|
118
|
-
|
165
|
+
|
119
166
|
{
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
167
|
+
type: 'num',
|
168
|
+
default: default,
|
169
|
+
required: required,
|
170
|
+
min: min,
|
171
|
+
max: max,
|
172
|
+
allow_nil: allow_nil
|
126
173
|
}
|
127
174
|
end
|
128
175
|
|
129
|
-
def positive_bigint_field(
|
130
|
-
|
131
|
-
|
176
|
+
def positive_bigint_field(
|
177
|
+
required: true,
|
178
|
+
default: nil,
|
179
|
+
min: 0,
|
180
|
+
max: 2_000_000_000_000,
|
181
|
+
allow_nil: false
|
182
|
+
)
|
183
|
+
Helper.check_type(type: 'integer', values: [min, max])
|
184
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
132
185
|
raise 'Invalid integer value.' unless (min >= 0) && (max <= 2_000_000_000_000)
|
133
|
-
|
186
|
+
|
134
187
|
{
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
188
|
+
type: 'int',
|
189
|
+
default: default,
|
190
|
+
required: required,
|
191
|
+
min: min,
|
192
|
+
max: max,
|
193
|
+
allow_nil: allow_nil
|
141
194
|
}
|
142
195
|
end
|
143
|
-
|
144
|
-
def positive_int_field(
|
145
|
-
|
146
|
-
|
196
|
+
|
197
|
+
def positive_int_field(
|
198
|
+
required: true,
|
199
|
+
default: nil,
|
200
|
+
min: 0,
|
201
|
+
max: 2_000_000_000,
|
202
|
+
allow_nil: false
|
203
|
+
)
|
204
|
+
Helper.check_type(type: 'integer', values: [min, max])
|
205
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
147
206
|
raise 'Invalid integer value.' unless (min >= 0) && (max <= 2_000_000_000)
|
148
|
-
|
207
|
+
|
149
208
|
{
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
209
|
+
type: 'int',
|
210
|
+
default: default,
|
211
|
+
required: required,
|
212
|
+
min: min,
|
213
|
+
max: max,
|
214
|
+
allow_nil: allow_nil
|
156
215
|
}
|
157
216
|
end
|
158
|
-
|
159
|
-
def arr_field(
|
160
|
-
|
161
|
-
|
217
|
+
|
218
|
+
def arr_field(
|
219
|
+
required: true,
|
220
|
+
default: nil,
|
221
|
+
allow_empty: false,
|
222
|
+
allow_nil: false
|
223
|
+
)
|
224
|
+
Helper.check_type(type: 'boolean', values: [required, allow_empty, allow_nil])
|
225
|
+
|
162
226
|
{
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
227
|
+
type: 'arr',
|
228
|
+
default: default,
|
229
|
+
required: required,
|
230
|
+
allow_empty: allow_empty,
|
231
|
+
allow_nil: allow_nil
|
168
232
|
}
|
169
233
|
end
|
170
|
-
|
171
|
-
def
|
172
|
-
|
173
|
-
|
234
|
+
|
235
|
+
def hash_field(
|
236
|
+
required: true,
|
237
|
+
default: nil,
|
238
|
+
allow_nil: false
|
239
|
+
)
|
240
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
241
|
+
|
174
242
|
{
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
243
|
+
type: 'hash',
|
244
|
+
default: default,
|
245
|
+
required: required,
|
246
|
+
allow_nil: allow_nil
|
179
247
|
}
|
180
248
|
end
|
181
|
-
|
182
|
-
def
|
183
|
-
|
184
|
-
|
249
|
+
|
250
|
+
def date_field(
|
251
|
+
required: true,
|
252
|
+
default: nil,
|
253
|
+
allow_nil: false
|
254
|
+
)
|
255
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
256
|
+
|
185
257
|
{
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
258
|
+
type: 'date',
|
259
|
+
default: default,
|
260
|
+
required: required,
|
261
|
+
allow_nil: allow_nil
|
190
262
|
}
|
191
263
|
end
|
192
|
-
|
193
|
-
def
|
194
|
-
|
195
|
-
|
264
|
+
|
265
|
+
def time_field(
|
266
|
+
required: true,
|
267
|
+
default: nil,
|
268
|
+
allow_nil: false
|
269
|
+
)
|
270
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
271
|
+
|
196
272
|
{
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
273
|
+
type: 'time',
|
274
|
+
default: default,
|
275
|
+
required: required,
|
276
|
+
allow_nil: allow_nil
|
201
277
|
}
|
202
278
|
end
|
203
279
|
|
204
|
-
def
|
205
|
-
|
206
|
-
|
280
|
+
def datetime_field(
|
281
|
+
required: true,
|
282
|
+
default: nil,
|
283
|
+
allow_nil: false
|
284
|
+
)
|
285
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
286
|
+
|
207
287
|
{
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
288
|
+
type: 'datetime',
|
289
|
+
default: default,
|
290
|
+
required: required,
|
291
|
+
allow_nil: allow_nil
|
212
292
|
}
|
213
293
|
end
|
214
294
|
|
215
|
-
def boolean_field(
|
216
|
-
|
217
|
-
|
295
|
+
def boolean_field(
|
296
|
+
required: true,
|
297
|
+
default: nil,
|
298
|
+
allow_nil: false
|
299
|
+
)
|
300
|
+
Helper.check_type(type: 'boolean', values: [required, allow_nil])
|
301
|
+
|
218
302
|
{
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
303
|
+
type: 'boolean',
|
304
|
+
default: default,
|
305
|
+
required: required,
|
306
|
+
allow_nil: allow_nil
|
223
307
|
}
|
224
308
|
end
|
225
|
-
|
226
309
|
end
|
227
|
-
|
228
310
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ParamsChecker
|
4
|
+
module Helper
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def check_type(
|
8
|
+
type: '',
|
9
|
+
values: []
|
10
|
+
)
|
11
|
+
case type
|
12
|
+
when 'integer'
|
13
|
+
raise "This field's type must be integer." if values.any? { |value| !value.is_a?(Integer) }
|
14
|
+
when 'numeric'
|
15
|
+
raise "This field's type must be numeric." if values.any? { |value| !value.is_a?(Numeric) }
|
16
|
+
when 'boolean'
|
17
|
+
raise "This field's type must be boolean." if values.any? { |value| !value.in? [true, false] }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|