Files
web/apps/scandic-web/server/routers/hotels/schemas/location/urls.ts

69 lines
1.6 KiB
TypeScript

import { z } from "zod"
import { isDefined } from "@/server/utils"
export const locationsUrlsSchema = z.object({
hotels: z
.object({
items: z.array(
z.object({
id: z.string(),
url: z.string(),
})
),
})
.transform((data) => {
return data.items
}),
cities: z
.object({
items: z
.array(
z
.object({
id: z
.object({
da: z.string().nullish(),
de: z.string().nullish(),
en: z.string().nullish(),
fi: z.string().nullish(),
no: z.string().nullish(),
pl: z.string().nullish(),
sv: z.string().nullish(),
})
.transform(
(data) =>
data.da ||
data.de ||
data.en ||
data.fi ||
data.no ||
data.pl ||
data.sv
),
url: z.string().nullish(),
})
.partial()
.transform((data) => {
if (!data.id || !data.url) {
return null
}
return {
id: data.id,
url: data.url,
}
})
)
.transform((data) => {
return data.filter(isDefined)
}),
})
.transform((data) => {
return data.items
}),
})
export type GetLocationsUrlsData = z.input<typeof locationsUrlsSchema>
export type LocationsUrls = z.output<typeof locationsUrlsSchema>