2024-05-16 13:47:06 +02:00
|
|
|
/*
|
|
|
|
|--------------------------------------------------------------------------
|
|
|
|
| Preloaded File - node ace make:preload rules/unique
|
|
|
|
|--------------------------------------------------------------------------
|
|
|
|
|*/
|
|
|
|
|
|
|
|
import { FieldContext } from '@vinejs/vine/types';
|
|
|
|
import db from '@adonisjs/lucid/services/db';
|
|
|
|
import vine from '@vinejs/vine';
|
|
|
|
import { VineString, VineNumber } from '@vinejs/vine';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Options accepted by the unique rule
|
|
|
|
*/
|
|
|
|
type Options = {
|
|
|
|
table: string;
|
|
|
|
column: string;
|
feat: update to vite.js, Refactor configuration files, remove unused assets, and clean up commented code:
- ace.js: use ts-node-maintained
- adonisrc.ts: load vite_provider, sett assetBundler to false, addd hooks property
- Dockerfile: change to node version 22
- package.json: remove babel depencies; add @swc/wasm, add vitejs/plugin-vue, add hot-hook, add vite, update eslint-config-prettier, tailwindcss, ts-node-maintained
- new vite.config.js and config/vite.ts
- inertia.js
- improved own vinejs_provider.ts
- adapted app.css needed for vitejs
- adapted app.ts: new resolve method neede for vitejs
relocated resources/js/logo.svg
- remove Buffer import into FileUpload.vue
- Create.vue: improved submit needed for @inertiajs/vue3 form helper
- Edit.vue: mproved submit needed for @inertiajs/vue3 form helper
- kernel.ts: load vite_middleware
- formated rotes.ts file
- rewritten allowed_extensions_mimetypes.ts file (removed typescript errors)
2025-02-07 10:14:57 +01:00
|
|
|
whereNot?: (field: FieldContext) => string;
|
2024-05-16 13:47:06 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
async function isUnique(value: unknown, options: Options, field: FieldContext) {
|
feat: update to vite.js, Refactor configuration files, remove unused assets, and clean up commented code:
- ace.js: use ts-node-maintained
- adonisrc.ts: load vite_provider, sett assetBundler to false, addd hooks property
- Dockerfile: change to node version 22
- package.json: remove babel depencies; add @swc/wasm, add vitejs/plugin-vue, add hot-hook, add vite, update eslint-config-prettier, tailwindcss, ts-node-maintained
- new vite.config.js and config/vite.ts
- inertia.js
- improved own vinejs_provider.ts
- adapted app.css needed for vitejs
- adapted app.ts: new resolve method neede for vitejs
relocated resources/js/logo.svg
- remove Buffer import into FileUpload.vue
- Create.vue: improved submit needed for @inertiajs/vue3 form helper
- Edit.vue: mproved submit needed for @inertiajs/vue3 form helper
- kernel.ts: load vite_middleware
- formated rotes.ts file
- rewritten allowed_extensions_mimetypes.ts file (removed typescript errors)
2025-02-07 10:14:57 +01:00
|
|
|
if (typeof value !== 'string' && typeof value !== 'number') {
|
2024-05-16 13:47:06 +02:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
let ignoreId: string | undefined;
|
|
|
|
if (options.whereNot) {
|
|
|
|
ignoreId = options.whereNot(field);
|
|
|
|
}
|
|
|
|
|
|
|
|
const builder = db.from(options.table).select(options.column).where(options.column, value);
|
|
|
|
if (ignoreId) {
|
|
|
|
builder.whereNot('id', '=', ignoreId);
|
|
|
|
}
|
|
|
|
const result = await builder.first();
|
|
|
|
if (result) {
|
|
|
|
// report that value is NOT unique
|
|
|
|
field.report('The {{ field }} field is not unique', 'isUnique', field);
|
2024-10-31 11:02:36 +01:00
|
|
|
// field.report(messages.unique, "isUnique", field);
|
feat: update to vite.js, Refactor configuration files, remove unused assets, and clean up commented code:
- ace.js: use ts-node-maintained
- adonisrc.ts: load vite_provider, sett assetBundler to false, addd hooks property
- Dockerfile: change to node version 22
- package.json: remove babel depencies; add @swc/wasm, add vitejs/plugin-vue, add hot-hook, add vite, update eslint-config-prettier, tailwindcss, ts-node-maintained
- new vite.config.js and config/vite.ts
- inertia.js
- improved own vinejs_provider.ts
- adapted app.css needed for vitejs
- adapted app.ts: new resolve method neede for vitejs
relocated resources/js/logo.svg
- remove Buffer import into FileUpload.vue
- Create.vue: improved submit needed for @inertiajs/vue3 form helper
- Edit.vue: mproved submit needed for @inertiajs/vue3 form helper
- kernel.ts: load vite_middleware
- formated rotes.ts file
- rewritten allowed_extensions_mimetypes.ts file (removed typescript errors)
2025-02-07 10:14:57 +01:00
|
|
|
}
|
2024-05-16 13:47:06 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
export const isUniqueRule = vine.createRule(isUnique);
|
|
|
|
|
|
|
|
declare module '@vinejs/vine' {
|
|
|
|
interface VineString {
|
|
|
|
isUnique(options: Options): this;
|
|
|
|
}
|
|
|
|
interface VineNumber {
|
|
|
|
isUnique(options: Options): this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
VineString.macro('isUnique', function (this: VineString, options: Options) {
|
|
|
|
return this.use(isUniqueRule(options));
|
|
|
|
});
|
|
|
|
VineNumber.macro('isUnique', function (this: VineNumber, options: Options) {
|
|
|
|
return this.use(isUniqueRule(options));
|
feat: update to vite.js, Refactor configuration files, remove unused assets, and clean up commented code:
- ace.js: use ts-node-maintained
- adonisrc.ts: load vite_provider, sett assetBundler to false, addd hooks property
- Dockerfile: change to node version 22
- package.json: remove babel depencies; add @swc/wasm, add vitejs/plugin-vue, add hot-hook, add vite, update eslint-config-prettier, tailwindcss, ts-node-maintained
- new vite.config.js and config/vite.ts
- inertia.js
- improved own vinejs_provider.ts
- adapted app.css needed for vitejs
- adapted app.ts: new resolve method neede for vitejs
relocated resources/js/logo.svg
- remove Buffer import into FileUpload.vue
- Create.vue: improved submit needed for @inertiajs/vue3 form helper
- Edit.vue: mproved submit needed for @inertiajs/vue3 form helper
- kernel.ts: load vite_middleware
- formated rotes.ts file
- rewritten allowed_extensions_mimetypes.ts file (removed typescript errors)
2025-02-07 10:14:57 +01:00
|
|
|
});
|