Tokiva-backend-Node / src /schemas /member.schema.ts
anoderb
feat: initial commit of Tokiva POS Node backend for Hugging Face
ef874e6
Raw
History Blame Contribute Delete
1.14 kB
import { z } from 'zod';
const booleanOrNumber = z.union([z.boolean(), z.number()])
.transform((val) => (typeof val === 'boolean' ? (val ? 1 : 0) : val));
export const createMemberSchema = z.object({
body: z.object({
kode: z.string({ required_error: 'Kode member wajib diisi' }).min(1, 'Kode member tidak boleh kosong'),
nama: z.string({ required_error: 'Nama member wajib diisi' }).min(1, 'Nama member tidak boleh kosong'),
nomor_hp: z.string({ required_error: 'Nomor HP wajib diisi' }).min(1, 'Nomor HP tidak boleh kosong'),
alamat: z.string().optional().nullable(),
limit_bon: z.number().optional().default(0),
foto_url: z.string().optional().nullable(),
aktif: booleanOrNumber.optional().default(1),
}),
});
export const updateMemberSchema = z.object({
body: z.object({
nama: z.string().optional(),
nomor_hp: z.string().optional(),
alamat: z.string().optional().nullable(),
total_poin: z.number().optional(),
limit_bon: z.number().optional(),
total_bon: z.number().optional(),
foto_url: z.string().optional().nullable(),
aktif: booleanOrNumber.optional(),
}),
});