UNPKG

adonis-forge

Version:

Bundle utils for AdonisJS

51 lines (50 loc) 1.85 kB
import { LucidModel, ModelQueryBuilderContract } from '@adonisjs/lucid/types/model'; import { VineValidator } from '@vinejs/vine'; import { SchemaTypes } from '@vinejs/vine/types'; import { BaseTransformer } from '@adonisjs/core/transformers'; export declare const crudActions: readonly [{ readonly label: "Paginate"; readonly value: "index"; }, { readonly label: "Detail"; readonly value: "show"; }, { readonly label: "Create"; readonly value: "store"; }, { readonly label: "Update"; readonly value: "update"; }, { readonly label: "Delete"; readonly value: "destroy"; }]; export type CrudAction = (typeof crudActions)[number]['value']; type TransformerClass<Resource, Rest extends any[] = any[]> = { new (resource: Resource, ...rest: Rest): BaseTransformer<Resource>; transform(data: Resource, ...rest: Rest): any; transform(data: Resource | null, ...rest: Rest): any; transform(data: Resource[], ...rest: Rest): any; paginate(data: Resource[], metaData: Record<string, any>, ...rest: Rest): any; }; export interface CrudOperationsOptions<T extends LucidModel> { model: T; only?: CrudAction[]; exclude?: CrudAction[]; validators?: { store?: VineValidator<SchemaTypes, any>; update?: VineValidator<SchemaTypes, any>; }; queryHandlers?: { index?: (query: ModelQueryBuilderContract<T>, qs: Record<string, string>) => void; show?: (query: ModelQueryBuilderContract<T>, qs: Record<string, string>) => void; }; events?: { stored?: (model: InstanceType<T>) => void; updated?: (payload: any) => void; }; transformer?: TransformerClass<InstanceType<T>>; } export interface CrudPaginationQs { } export declare function Crud<T extends LucidModel>(options: CrudOperationsOptions<T>): ClassDecorator; export {};