Files
quicklanch-server/src/app/modules/template/template.validation.ts
T

88 lines
2.0 KiB
TypeScript

import { z } from "zod";
// Template Options that we need to use for validation.
// Ingredient Option
const ingredientOptionSchema = z.object({
ingrImg: z.string().url().or(z.string()),
ingrTitle: z.string().min(1),
ingrDes: z.string().min(1),
});
// Instruction Option
const instructionOptionSchema = z.object({
hint: z.string().min(1),
detail: z.string().min(1),
});
// FAQ Option
const faqOptionSchema = z.object({
index: z.number(),
text: z.string().min(1),
});
// Tips Option
const tipsOptionSchema = z.object({
index: z.number(),
text: z.string().min(1),
});
// Price Option
const priceOptionSchema = z.object({
quantity: z.string().min(1),
price: z.string().min(1),
});
// Create the main template schema validation
const create_template = z.object({
language: z.string().min(1),
deliveryCharge: z.string().min(1),
banner: z.object({
isVisible: z.boolean(),
bannerTitle: z.string().min(1),
bannerDesc: z.string().min(1),
bannerImage: z.string(),
}),
address: z.object({
isVisible: z.boolean(),
phoneNumber: z.string().min(1),
shopLocation: z.string().min(1),
shopEmail: z.string().email(),
}),
ingredient: z.object({
isVisible: z.boolean(),
options: z.array(ingredientOptionSchema).min(1),
}),
instruction: z.object({
isVisible: z.boolean(),
instBanner: z.string(),
options: z.array(instructionOptionSchema).min(1),
}),
faq: z.object({
isVisible: z.boolean(),
options: z.array(faqOptionSchema).min(1),
}),
tips: z.object({
isVisible: z.boolean(),
tipsBanner: z.string(),
options: z.array(tipsOptionSchema).min(1),
}),
priceCombo: z.object({
isVisible: z.boolean(),
options: z.array(priceOptionSchema).min(1),
}),
product: z.object({
isVisible: z.boolean(),
price: z.string().min(1),
discount: z.number().min(0),
productName: z.string().min(1),
}),
});
const update_template = z.object({});
export const template_validations = {
create_template,
update_template,
};