Untitled

 avatar
unknown
plain_text
a year ago
1.6 kB
9
Indexable
import Joi, { CustomHelpers } from 'joi';

interface Item {
    coverDescription: string;
    coverageLimit: number;
}

interface ListedItems {
    contents: Item[];
    personalPossessions: Item[];
}

const schema = Joi.object({
    listedItems: Joi.object({
        contents: Joi.array().items(
            Joi.object({
                coverDescription: Joi.string().required(),
                coverageLimit: Joi.number().min(40000).required()
            })
        ).required(),
        personalPossessions: Joi.array().items(
            Joi.object({
                coverDescription: Joi.string().required(),
                coverageLimit: Joi.number().min(10000).required()
            })
        ).required()
    }).required()
});

// Example data
const data: ListedItems = {
    listedItems: {
        contents: [
            { coverDescription: "Retail-TV", coverageLimit: 40000 },
            // { coverDescription: "Retail-Laptop", coverageLimit: 30000 } // Uncomment to see validation failure
        ],
        personalPossessions: [
            { coverDescription: "Retail-Mobile", coverageLimit: 10000 },
            // { coverDescription: "Retail-Tablet", coverageLimit: 8000 } // Uncomment to see validation failure
        ]
    }
};

// Validate data against schema
const { error, value } = schema.validate(data);

if (error) {
    // Handle validation errors
    console.error('Validation error:', error.details);
} else {
    // Valid data
    console.log('Valid data:', value);
}
Editor is loading...
Leave a Comment