/* |-------------------------------------------------------------------------- | 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 // ); // } }, );