18 lines
690 B
TypeScript
18 lines
690 B
TypeScript
import { z } from "zod/v4";
|
|
|
|
export const createTripSchema = z.object({
|
|
title: z.string().min(3, "Judul minimal 3 karakter"),
|
|
description: z.string().optional(),
|
|
mountain: z.string().min(2, "Nama gunung harus diisi"),
|
|
location: z.string().min(2, "Lokasi harus diisi"),
|
|
date: z.string().refine((val) => !isNaN(Date.parse(val)), "Tanggal berangkat tidak valid"),
|
|
endDate: z
|
|
.string()
|
|
.optional()
|
|
.refine((val) => !val || !isNaN(Date.parse(val)), "Tanggal pulang tidak valid"),
|
|
maxParticipants: z.coerce.number().min(1, "Minimal 1 peserta"),
|
|
price: z.coerce.number().min(0, "Harga tidak valid"),
|
|
});
|
|
|
|
export type CreateTripInput = z.infer<typeof createTripSchema>;
|