Files
cod-api/validate/brand.schema.js
2025-10-24 11:09:50 +07:00

78 lines
3.1 KiB
JavaScript

const Joi = require("joi");
// ========================
// Brand Validation
// ========================
const insertBrandSchema = Joi.object({
brand_name: Joi.string().max(100).required(),
brand_type: Joi.string().max(50).optional(),
brand_manufacture: Joi.string().max(100).optional(),
brand_model: Joi.string().max(100).optional(),
is_active: Joi.boolean().required(),
description: Joi.string().max(255).optional(),
error_code: Joi.array().items(
Joi.object({
error_code: Joi.string().max(100).required(),
error_code_name: Joi.string().max(100).required(),
error_code_description: Joi.string().optional(),
is_active: Joi.boolean().required(),
solution: Joi.array().items(
Joi.object({
solution_name: Joi.string().max(100).required(),
type_solution: Joi.string().valid('text', 'pdf', 'image', 'video', 'link').required(),
text_solution: Joi.when('type_solution', {
is: 'text',
then: Joi.string().required(),
otherwise: Joi.string().optional().allow('')
}),
path_solution: Joi.when('type_solution', {
is: 'text',
then: Joi.string().optional().allow(''),
otherwise: Joi.string().required()
}),
is_active: Joi.boolean().required()
})
).min(1).required()
})
).min(1).required()
});
// Update Brand Validation
const updateBrandSchema = Joi.object({
brand_name: Joi.string().max(100).required(),
brand_type: Joi.string().max(50).optional(),
brand_manufacture: Joi.string().max(100).optional(),
brand_model: Joi.string().max(100).optional(),
is_active: Joi.boolean().required(),
description: Joi.string().max(255).optional(),
error_code: Joi.array().items(
Joi.object({
error_code: Joi.string().max(100).required(),
error_code_name: Joi.string().max(100).required(),
error_code_description: Joi.string().optional(),
is_active: Joi.boolean().required(),
solution: Joi.array().items(
Joi.object({
solution_name: Joi.string().max(100).required(),
type_solution: Joi.string().valid('text', 'pdf', 'image', 'video', 'link').required(),
text_solution: Joi.when('type_solution', {
is: 'text',
then: Joi.string().required(),
otherwise: Joi.string().optional().allow('')
}),
path_solution: Joi.when('type_solution', {
is: 'text',
then: Joi.string().optional().allow(''),
otherwise: Joi.string().required()
}),
is_active: Joi.boolean().optional()
})
).min(1).required()
})
).optional()
}).min(1);
module.exports = {
insertBrandSchema,
updateBrandSchema
};