@coursebuilder/core
Version:
Core package for Course Builder
26 lines (23 loc) • 977 B
text/typescript
import { z } from 'zod'
export const couponSchema = z.object({
id: z.string(),
code: z.string().max(191).optional().nullable(),
createdAt: z.date().nullable(),
expires: z.date().nullable(),
fields: z.record(z.any()).default({}),
maxUses: z.number().int().default(-1),
default: z.boolean().default(false),
merchantCouponId: z.string().max(191).optional().nullable(),
status: z.number().int().default(0),
usedCount: z.number().int().default(0),
percentageDiscount: z.coerce.number().refine((value) => {
const decimalPlaces = value.toString().split('.')[1]?.length || 0
return decimalPlaces <= 2
}),
restrictedToProductId: z.string().max(191).optional().nullable(),
bulkPurchases: z.array(z.any()).default([]),
redeemedBulkCouponPurchases: z.array(z.any()).default([]),
bulkPurchaseId: z.string().max(191).optional().nullable(), // TODO: remove
organizationId: z.string().max(191).optional().nullable(),
})
export type Coupon = z.infer<typeof couponSchema>