import * as yup from 'yup'; import YupPassword from 'yup-password'; YupPassword(yup); import { Schema } from 'mongoose'; interface mongooseAddition { _id?: Schema.Types.ObjectId; createdAt?: Schema.Types.Date; updatedAt?: Schema.Types.Date; } // Create export const add = yup.object({ brand: yup.string().required(), name: yup.string().required(), degree: yup.number().required(), packaging: yup.string().required() }); export interface IBeer extends yup.InferType, mongooseAddition {} export const addExam: IBeer = { brand: 'Pilsner Urqell', name: 'Kozel', degree: 11, packaging: 'can' }; // Remove export const del = yup.object({ _id: yup.string().required() }); export interface IDel extends yup.InferType {} export const delExam: IDel = { _id: '6352b303b71cb62222f39895' }; // Update export const edit = yup.object({ _id: yup.string().required(), brand: yup.string(), name: yup.string(), degree: yup.number(), packaging: yup.string(), //imgs: yup.mixed().when('$imgs', (imgs, schema) => // Array.isArray(imgs) ? schema.array() : schema.string() //) imgs: yup.mixed().test('is-array-or-string', 'imgs must be either an array or a string', value => Array.isArray(value) || typeof value === 'string') //imgs: yup.mixed().when('isArray', { // is: Array.isArray, // then: yup.array(), // otherwise: yup.string() //}) }); export interface IEdit extends yup.InferType {} export const editExam: IEdit = { _id: '6355b95dc03fad77bc380146', brand: 'Pilsner Urqell', name: 'Radegast', degree: 12, packaging: 'bottle', imgs: [] };