@forestadmin/datasource-sequelize 1.8.11 → 1.9.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.
|
@@ -6,5 +6,6 @@ export default class ModelToCollectionSchemaConverter {
|
|
|
6
6
|
private static convertAttribute;
|
|
7
7
|
private static convertAttributes;
|
|
8
8
|
static convert(model: ModelDefined<any, any>, logger: Logger): CollectionSchema;
|
|
9
|
+
private static convertAttributeValidation;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=model-to-collection-schema-converter.d.ts.map
|
|
@@ -72,13 +72,7 @@ class ModelToCollectionSchemaConverter {
|
|
|
72
72
|
allowNull: attribute.allowNull,
|
|
73
73
|
isSortable: true,
|
|
74
74
|
};
|
|
75
|
-
|
|
76
|
-
!column.isReadOnly &&
|
|
77
|
-
!attribute.defaultValue &&
|
|
78
|
-
// eslint-disable-next-line no-underscore-dangle
|
|
79
|
-
!attribute._autoGenerated) {
|
|
80
|
-
column.validation.push({ operator: 'Present' });
|
|
81
|
-
}
|
|
75
|
+
column.validation.push(...ModelToCollectionSchemaConverter.convertAttributeValidation(attribute, column));
|
|
82
76
|
if (attribute.primaryKey)
|
|
83
77
|
column.isPrimaryKey = true;
|
|
84
78
|
if (attribute.defaultValue !== null &&
|
|
@@ -123,6 +117,92 @@ class ModelToCollectionSchemaConverter {
|
|
|
123
117
|
segments: [],
|
|
124
118
|
};
|
|
125
119
|
}
|
|
120
|
+
static convertAttributeValidation(attribute, column) {
|
|
121
|
+
const validations = [];
|
|
122
|
+
if (attribute.allowNull === false &&
|
|
123
|
+
!column.isReadOnly &&
|
|
124
|
+
!attribute.defaultValue &&
|
|
125
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
126
|
+
!attribute._autoGenerated) {
|
|
127
|
+
validations.push({ operator: 'Present' });
|
|
128
|
+
}
|
|
129
|
+
// eslint-disable-next-line
|
|
130
|
+
if (!attribute.validate || attribute._autoGenerated === true) {
|
|
131
|
+
return validations;
|
|
132
|
+
}
|
|
133
|
+
if (attribute.validate.min) {
|
|
134
|
+
validations.push({
|
|
135
|
+
operator: 'GreaterThan',
|
|
136
|
+
value: attribute.validate.min.args || attribute.validate.min,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (attribute.validate.max) {
|
|
140
|
+
validations.push({
|
|
141
|
+
operator: 'LessThan',
|
|
142
|
+
value: attribute.validate.max.args || attribute.validate.max,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (attribute.validate.isBefore) {
|
|
146
|
+
validations.push({
|
|
147
|
+
operator: 'Before',
|
|
148
|
+
value: attribute.validate.isBefore.args || attribute.validate.isBefore,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (attribute.validate.isAfter) {
|
|
152
|
+
validations.push({
|
|
153
|
+
operator: 'After',
|
|
154
|
+
value: attribute.validate.isAfter.args || attribute.validate.isAfter,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (attribute.validate.len) {
|
|
158
|
+
const length = attribute.validate.len.args || attribute.validate.len;
|
|
159
|
+
if (Array.isArray(length) && length.length) {
|
|
160
|
+
validations.push({
|
|
161
|
+
operator: 'LongerThan',
|
|
162
|
+
value: length[0],
|
|
163
|
+
});
|
|
164
|
+
if (length.length === 2) {
|
|
165
|
+
validations.push({
|
|
166
|
+
operator: 'ShorterThan',
|
|
167
|
+
value: length[1],
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
validations.push({
|
|
173
|
+
operator: 'LongerThan',
|
|
174
|
+
value: length,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (attribute.validate.equals) {
|
|
179
|
+
validations.push({
|
|
180
|
+
operator: 'Equal',
|
|
181
|
+
value: attribute.validate.equals.toString(),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
if (attribute.validate.contains) {
|
|
185
|
+
validations.push({
|
|
186
|
+
operator: 'Contains',
|
|
187
|
+
value: attribute.validate.contains,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (attribute.validate.is) {
|
|
191
|
+
const value = attribute.validate.is;
|
|
192
|
+
if (!Array.isArray(attribute.validate.is)) {
|
|
193
|
+
validations.push({
|
|
194
|
+
operator: 'Like',
|
|
195
|
+
value: value.toString(),
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (attribute.validate.notEmpty) {
|
|
200
|
+
validations.push({
|
|
201
|
+
operator: 'Present',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
return validations;
|
|
205
|
+
}
|
|
126
206
|
}
|
|
127
207
|
exports.default = ModelToCollectionSchemaConverter;
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtdG8tY29sbGVjdGlvbi1zY2hlbWEtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21vZGVsLXRvLWNvbGxlY3Rpb24tc2NoZW1hLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLHlDQVdtQjtBQUVuQixzRUFBNkM7QUFHN0MsTUFBcUIsZ0NBQWdDO0lBQzNDLE1BQU0sQ0FBQyxrQkFBa0I7SUFDL0IsOERBQThEO0lBQzlELFdBQTBEO1FBRTFELFFBQVEsV0FBVyxDQUFDLGVBQWUsRUFBRTtZQUNuQyxLQUFLLHFCQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTztvQkFDTCxpQkFBaUIsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUk7b0JBQzFDLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtvQkFDbEMsZ0JBQWdCLEVBQUcsV0FBZ0QsQ0FBQyxTQUFTO29CQUM3RSxJQUFJLEVBQUUsV0FBVztpQkFDbEIsQ0FBQztZQUNKLEtBQUsseUJBQWEsQ0FBQyxJQUFJO2dCQUNyQixPQUFPO29CQUNMLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDMUMsaUJBQWlCLEVBQUcsV0FBZ0MsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUk7b0JBQ3ZFLFNBQVMsRUFBRyxXQUE2QixDQUFDLFVBQVU7b0JBQ3BELGVBQWUsRUFBRyxXQUE2QixDQUFDLFNBQVM7b0JBQ3pELFVBQVUsRUFBRyxXQUE2QixDQUFDLFFBQVE7b0JBQ25ELGdCQUFnQixFQUFHLFdBQTZCLENBQUMsU0FBUztvQkFDMUQsSUFBSSxFQUFFLFlBQVk7aUJBQ25CLENBQUM7WUFDSixLQUFLLG1CQUFPLENBQUMsSUFBSTtnQkFDZixPQUFPO29CQUNMLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSTtvQkFDMUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxVQUFVO29C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
|