fix: update booking service schemas

This commit is contained in:
Christel Westerberg
2024-11-18 10:54:35 +01:00
committed by Joakim Jäderberg
parent 9c7ac78e14
commit d67affd677
6 changed files with 61 additions and 17 deletions

View File

@@ -2,6 +2,15 @@ import { z } from "zod"
import { ChildBedTypeEnum } from "@/constants/booking"
const signupSchema = z.discriminatedUnion("becomeMember", [
z.object({
dateOfBirth: z.string(),
postalCode: z.string(),
becomeMember: z.literal<boolean>(true),
}),
z.object({ becomeMember: z.literal<boolean>(false) }),
])
const roomsSchema = z.array(
z.object({
adults: z.number().int().nonnegative(),
@@ -15,14 +24,17 @@ const roomsSchema = z.array(
.default([]),
rateCode: z.string(),
roomTypeCode: z.coerce.string(),
guest: z.object({
firstName: z.string(),
lastName: z.string(),
email: z.string().email(),
phoneNumber: z.string(),
countryCode: z.string(),
membershipNumber: z.string().optional(),
}),
guest: z.intersection(
z.object({
firstName: z.string(),
lastName: z.string(),
email: z.string().email(),
phoneNumber: z.string(),
countryCode: z.string(),
membershipNumber: z.string().optional(),
}),
signupSchema
),
smsConfirmationRequested: z.boolean(),
packages: z.object({
breakfast: z.boolean(),
@@ -30,7 +42,13 @@ const roomsSchema = z.array(
petFriendly: z.boolean(),
accessibility: z.boolean(),
}),
roomPrice: z.number().or(z.string().transform((val) => Number(val))),
roomPrice: z.object({
publicPrice: z.number().or(z.string().transform((val) => Number(val))),
memberPrice: z
.number()
.or(z.string().transform((val) => Number(val)))
.optional(),
}),
})
)