import { z } from "zod" import { Lang } from "@scandic-hotels/common/constants/language" import { createCounter } from "@scandic-hotels/common/telemetry" import { publicProcedure } from "../../../procedures" import { getCityPageUrls } from "../../contentstack/destinationCityPage/utils" import { getHotelPageUrls } from "../../contentstack/hotelPage/utils" const getLocationsUrlsInput = z.object({ lang: z.nativeEnum(Lang), }) export const urls = publicProcedure .input(getLocationsUrlsInput) .query(async ({ input }) => { const { lang } = input const locationsUrlsCounter = createCounter("trpc.hotel.locations.urls") const metricsLocationsUrls = locationsUrlsCounter.init({ lang, }) metricsLocationsUrls.start() const [hotelPageUrlsResult, cityPageUrlsResult] = await Promise.allSettled([ getHotelPageUrls(lang), getCityPageUrls(lang), ]) if ( hotelPageUrlsResult.status === "rejected" || cityPageUrlsResult.status === "rejected" ) { metricsLocationsUrls.dataError(`Failed to get data for page URLs`, { hotelPageUrlsResult, cityPageUrlsResult, }) return null } metricsLocationsUrls.success() return { hotels: hotelPageUrlsResult.value, cities: cityPageUrlsResult.value, } })