import Joi from 'joi'; import { Request, Response, NextFunction } from 'express'; import BaseValidator from './joiSchemaBuilder'; import { CrudValidatorRules } from '../types/commonType'; export default class BaseCrudValidator, TKeys extends Extract = Extract> extends BaseValidator { protected baseSchema: Joi.ObjectSchema; protected rules: CrudValidatorRules; constructor(baseSchema: Joi.ObjectSchema, rules?: CrudValidatorRules); /** MERGE RULES */ private mergeRules; /** APPLY DEFAULT ID RULE */ private applyDefaultIdRule; /** Nested Required for */ private applyNestedRequired; /** CREATE */ createValidator: (req: Request, res: Response, next: NextFunction) => void; /** UPDATE */ updateValidator: (req: Request, res: Response, next: NextFunction) => void; /** DELETE */ deleteValidator: (req: Request, res: Response, next: NextFunction) => void; /** GET BY ID */ getByIdValidator: (req: Request, res: Response, next: NextFunction) => void; /** GET ALL */ getAllValidator: (req: Request, res: Response, next: NextFunction) => void; /** GET ALL WITH PAGINATION */ getAllWithPaginationValidator: (req: Request, res: Response, next: NextFunction) => void; }