import { z } from "zod" import { imageMetaDataSchema, imageSizesSchema } from "./image" const roomContentSchema = z.object({ images: z.array( z.object({ metaData: imageMetaDataSchema, imageSizes: imageSizesSchema, }) ), texts: z.object({ descriptions: z.object({ short: z.string(), medium: z.string(), }), }), }) const roomTypesSchema = z.object({ name: z.string(), description: z.string(), code: z.string(), roomCount: z.number(), mainBed: z.object({ type: z.string(), description: z.string(), widthRange: z.object({ min: z.number(), max: z.number(), }), }), fixedExtraBed: z.object({ type: z.string(), description: z.string().optional(), widthRange: z.object({ min: z.number(), max: z.number(), }), }), roomSize: z.object({ min: z.number(), max: z.number(), }), occupancy: z.object({ total: z.number(), adults: z.number(), children: z.number(), }), isLackingCribs: z.boolean(), isLackingExtraBeds: z.boolean(), }) const roomFacilitiesSchema = z.object({ availableInAllRooms: z.boolean(), name: z.string(), isUniqueSellingPoint: z.boolean(), sortOrder: z.number(), }) export const roomSchema = z .object({ attributes: z.object({ name: z.string(), sortOrder: z.number(), content: roomContentSchema, roomTypes: z.array(roomTypesSchema), roomFacilities: z.array(roomFacilitiesSchema), occupancy: z.object({ total: z.number(), adults: z.number(), children: z.number(), }), roomSize: z.object({ min: z.number(), max: z.number(), }), }), id: z.string(), type: z.enum(["roomcategories"]), }) .transform((data) => { return { descriptions: data.attributes.content.texts.descriptions, id: data.id, images: data.attributes.content.images, name: data.attributes.name, occupancy: data.attributes.occupancy, roomSize: data.attributes.roomSize, sortOrder: data.attributes.sortOrder, type: data.type, roomFacilities: data.attributes.roomFacilities, } })