38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import { z } from "zod"
|
|
|
|
import { citySchema } from "@/server/routers/hotels/schemas/city"
|
|
import { nearbyHotelsSchema } from "@/server/routers/hotels/schemas/hotel/include/nearbyHotels"
|
|
import { restaurantsSchema } from "@/server/routers/hotels/schemas/hotel/include/restaurants"
|
|
import {
|
|
roomCategoriesSchema,
|
|
transformRoomCategories,
|
|
} from "@/server/routers/hotels/schemas/hotel/include/roomCategories"
|
|
import { additionalDataSchema, transformAdditionalData } from "../../additionalData"
|
|
|
|
export const includeSchema = 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
|
|
}
|
|
})
|