forked from geolba/tethys.backend
Arno Kaimbacher
e0ff71b117
- additional validation rules like 'uniqueArray' - additional Lucid models like BaseModel.ts for filling attributes, Title.ts, Description.ts - npm updates for @adonisjs/core
75 lines
2.7 KiB
TypeScript
75 lines
2.7 KiB
TypeScript
/*
|
|
|--------------------------------------------------------------------------
|
|
| Preloaded File
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Any code written inside this file will be executed during the application
|
|
| boot.
|
|
https://issuehunt.io/r/adonisjs/validator/issues/84
|
|
|
|
|
*/
|
|
// import { string } from '@ioc:Adonis/Core/Helpers';
|
|
import { validator } from '@ioc:Adonis/Core/Validator';
|
|
|
|
validator.rule('uniqueArray', (dataArray, [field], { pointer, arrayExpressionPointer, errorReporter }) => {
|
|
const array = dataArray; //validator.helpers.getFieldValue(data, field, tip);
|
|
|
|
if (!Array.isArray(array)) {
|
|
throw new Error(`The ${pointer} must be an array.`);
|
|
}
|
|
|
|
const uniqueValues = new Set();
|
|
for (let i = 0; i < array.length; i++) {
|
|
const item = array[i];
|
|
const attributeValue = item[field]; // Extract the attribute value for uniqueness check
|
|
|
|
if (uniqueValues.has(attributeValue)) {
|
|
// throw new Error(`The ${field} array contains duplicate values for the ${field} attribute.`)
|
|
errorReporter.report(
|
|
pointer,
|
|
'uniqueArray', // Keep an eye on this
|
|
`The ${pointer} array contains duplicate values for the ${field} attribute.`,
|
|
arrayExpressionPointer,
|
|
{ field, array: pointer },
|
|
);
|
|
return;
|
|
}
|
|
|
|
uniqueValues.add(attributeValue);
|
|
}
|
|
});
|
|
|
|
validator.rule(
|
|
'translatedLanguage',
|
|
(value, [mainLanguageField, typeField], { root, tip, pointer, arrayExpressionPointer, errorReporter }) => {
|
|
if (typeof value !== 'string') {
|
|
return;
|
|
}
|
|
// const fieldValue = validator. getValue(data, field)
|
|
// this should return the "category_id" value present in "root", but i got undefined
|
|
const mainLanguage = validator.helpers.getFieldValue(mainLanguageField, root, tip);
|
|
const type = validator.helpers.getFieldValue(typeField, root, tip);
|
|
|
|
if (type && type == 'Translated') {
|
|
if (value == mainLanguage) {
|
|
errorReporter.report(
|
|
pointer,
|
|
'translatedLanguage', // Keep an eye on this
|
|
'translatedLanguage validation failed',
|
|
arrayExpressionPointer,
|
|
{ mainLanguage },
|
|
);
|
|
}
|
|
}
|
|
|
|
// if (value !== string.camelCase(value)) {
|
|
// options.errorReporter.report(
|
|
// options.pointer,
|
|
// 'camelCase',
|
|
// 'camelCase validation failed',
|
|
// options.arrayExpressionPointer
|
|
// );
|
|
// }
|
|
},
|
|
);
|