import { z } from "zod" import { citySchema } from "../city" import { additionalDataSchema, transformAdditionalData, } from "./include/additionalData" import { nearbyHotelsSchema } from "./include/nearbyHotels" import { restaurantsSchema } from "./include/restaurants" import { roomCategoriesSchema, transformRoomCategories, } from "./include/roomCategories" export const includeSchema = z .union([ z.null(), z.undefined(), z.discriminatedUnion("type", [ additionalDataSchema, citySchema, nearbyHotelsSchema, restaurantsSchema, roomCategoriesSchema, ]), ]) .transform((data) => { switch (data?.type) { case "additionalData": return transformAdditionalData(data) case "cities": case "hotels": case "restaurants": return { ...data.attributes, id: data.id, type: data.type, } case "roomcategories": return transformRoomCategories(data) default: return null } })