LogoLogo

Schema Benchmarks

    • home
      Home

    • download_2
      Download
    • timer
      Initialization
    • check_circle
      Validation
    • output_circle
      Parsing

    • article
      Blog
Code styleCode style
Normal styleNormal style
System themeSystem theme
Light themeLight theme
Dark themeDark theme
Expand sidebarExpand sidebar
joi/SourceSource
Code styleCode style
Normal styleNormal style
System themeSystem theme
Light themeLight theme
Dark themeDark theme
github
GitHubGitHub
schemas/libraries/joi/download.ts
import Joi from "joi"; import type { ProductData } from "#src"; const imageSchema = Joi.object({ id: Joi.number().required(), created: Joi.date().required(), title: Joi.string().min(1).max(100).required(), type: Joi.string().valid("jpg", "png").required(), size: Joi.number().required(), url: Joi.string().uri().required(), }); const ratingSchema = Joi.object({ id: Joi.number().required(), stars: Joi.number().min(0).max(5).required(), title: Joi.string().min(1).max(100).required(), text: Joi.string().min(1).max(1000).required(), images: Joi.array().items(imageSchema).required(), }); const productSchema = Joi.object({ id: Joi.number().required(), created: Joi.date().required(), title: Joi.string().min(1).max(100).required(), brand: Joi.string().min(1).max(30).required(), description: Joi.string().min(1).max(500).required(), price: Joi.number().min(1).max(10000).required(), discount: Joi.number().min(1).max(100).allow(null).required(), quantity: Joi.number().min(0).max(10).required(), tags: Joi.array().items(Joi.string().min(1).max(30)).required(), images: Joi.array().items(imageSchema).required(), ratings: Joi.array().items(ratingSchema).required(), }) satisfies Joi.Schema<ProductData>; productSchema.validate({});
Created by eskimojo for Open Circle