23 lines
841 B
TypeScript
23 lines
841 B
TypeScript
import { z } from 'zod'
|
|
|
|
export const productSchema = z.object({
|
|
name: z.string().min(1, 'Product name is required'),
|
|
description: z.string().optional(),
|
|
price: z.number().positive('Price must be positive'),
|
|
discount: z.number().min(0).max(100).default(0),
|
|
images: z.array(z.string().url()).default([]),
|
|
stock: z.number().int().min(0).default(0),
|
|
categoryId: z.string().min(1, 'Category is required'),
|
|
sku: z.string().min(1, 'SKU is required'),
|
|
slug: z.string().min(1, 'Slug is required')
|
|
})
|
|
|
|
export const categorySchema = z.object({
|
|
name: z.string().min(1, 'Category name is required'),
|
|
description: z.string().optional(),
|
|
image: z.string().url().optional(),
|
|
isActive: z.boolean().default(true)
|
|
})
|
|
|
|
export type ProductInput = z.infer<typeof productSchema>
|
|
export type CategoryInput = z.infer<typeof categorySchema> |