@forestadmin/datasource-sequelize 1.8.11 → 1.9.1
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,7 +6,8 @@ export default class AggregationUtils {
|
|
|
6
6
|
private dialect;
|
|
7
7
|
private col;
|
|
8
8
|
private dateAggregationConverter;
|
|
9
|
-
readonly
|
|
9
|
+
readonly _aggregateFieldName = "__aggregate__";
|
|
10
|
+
get aggregateFieldName(): "__aggregate__" | "_0";
|
|
10
11
|
constructor(model: ModelDefined<any, any>);
|
|
11
12
|
private getGroupFieldName;
|
|
12
13
|
quoteField(field: string): string;
|
|
@@ -8,9 +8,18 @@ const date_aggregation_converter_1 = __importDefault(require("./date-aggregation
|
|
|
8
8
|
const serializer_1 = __importDefault(require("./serializer"));
|
|
9
9
|
const un_ambigous_1 = __importDefault(require("./un-ambigous"));
|
|
10
10
|
class AggregationUtils {
|
|
11
|
+
get aggregateFieldName() {
|
|
12
|
+
if (this.model.sequelize.options
|
|
13
|
+
.minifyAliases) {
|
|
14
|
+
// when minifyAliases, sequelize uses _0 as column name instead of __aggregate__
|
|
15
|
+
// fixes https://app.clickup.com/t/86c04wd01
|
|
16
|
+
return '_0';
|
|
17
|
+
}
|
|
18
|
+
return this._aggregateFieldName;
|
|
19
|
+
}
|
|
11
20
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
21
|
constructor(model) {
|
|
13
|
-
this.
|
|
22
|
+
this._aggregateFieldName = '__aggregate__';
|
|
14
23
|
this.model = model;
|
|
15
24
|
this.dialect = this.model.sequelize.getDialect();
|
|
16
25
|
this.col = this.model.sequelize.col;
|
|
@@ -78,4 +87,4 @@ class AggregationUtils {
|
|
|
78
87
|
}
|
|
79
88
|
}
|
|
80
89
|
exports.default = AggregationUtils;
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdncmVnYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYWdncmVnYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFBZ0c7QUFZaEcsOEZBQW9FO0FBQ3BFLDhEQUFzQztBQUN0QyxnRUFBNEM7QUFFNUMsTUFBcUIsZ0JBQWdCO0lBU25DLElBQUksa0JBQWtCO1FBQ3BCLElBQ0csSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFnRSxDQUFDLE9BQU87YUFDakYsYUFBYSxFQUNoQjtZQUNBLGdGQUFnRjtZQUNoRiw0Q0FBNEM7WUFDNUMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsWUFBWSxLQUE2QjtRQWZoQyx3QkFBbUIsR0FBRyxlQUFlLENBQUM7UUFnQjdDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFhLENBQUM7UUFDNUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFFcEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksb0NBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRU8saUJBQWlCLENBQUMsVUFBa0I7UUFDMUMsT0FBTyxHQUFHLFVBQVUsYUFBYSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYTtRQUN0QixJQUFJO1lBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBQSxxQkFBZSxFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FB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
|
|
@@ -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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
|