/* |-------------------------------------------------------------------------- | Preloaded File - node ace make:preload validator |-------------------------------------------------------------------------- | | Any code written inside this file will be executed during the application | boot. https://issuehunt.io/r/adonisjs/validator/issues/84 | */ import vine from '@vinejs/vine'; // import { FieldContext } from '@vinejs/vine/types'; // import db from '@adonisjs/lucid/services/db'; import { VanillaErrorReporter } from '#validators/vanilla_error_reporter'; // import { SimpleErrorReporter } from '@vinejs/vine'; // vine.messagesProvider = new SimpleMessagesProvider({ // // Applicable for all fields // 'required': 'The {{ field }} field is required', // 'string': 'The value of {{ field }} field must be a string', // 'email': 'The value is not a valid email address', // // 'contacts.0.email.required': 'The primary email of the contact is required', // // 'contacts.*.email.required': 'Contact email is required', // 'permissions.minLength': 'at least {{ options.minLength }} permission must be defined', // 'permissions.*.number': 'Define permissions as valid numbers', // }) vine.errorReporter = () => new VanillaErrorReporter(); // /** // * Options accepted by the unique rule // */ // type Options = { // table: string; // column: string; // }; // /** // * Implementation // */ // async function unique(value: unknown, options: Options, field: FieldContext) { // /** // * We do not want to deal with non-string // * values. The "string" rule will handle the // * the validation. // */ // if (typeof value !== 'string') { // return; // } // const builder = await db // .from(options.table) // .select(options.column) // .where(options.column, value).first(); // const row = await builder.first(); // if (row) { // field.report('The {{ field }} field is not unique', 'unique', field); // } // } // /** // * Converting a function to a VineJS rule // */ // export const uniqueRule = vine.createRule(unique); // VineString.macro('unique', function (this: VineString, options: Options) { // return this.use(uniqueRule(options)); // }); // // declare module '@vinejs/vine' { // // interface VineString { // // unique(options: Options): this; // // } // // }