fix(SW-1446): use existing functions for url data

This commit is contained in:
Michael Zetterberg
2025-04-04 13:27:40 +02:00
parent 9e84da45bc
commit 4aeb5b071d
6 changed files with 72 additions and 98 deletions

View File

@@ -3,9 +3,8 @@ import { Lang } from "@/constants/languages"
import { env } from "@/env/server"
import * as api from "@/lib/api"
import { dt } from "@/lib/dt"
import { GetLocationsUrls } from "@/lib/graphql/Query/Locations/Locations.graphql"
import { request } from "@/lib/graphql/request"
import { badRequestError, unauthorizedError } from "@/server/errors/trpc"
import { getCityPageUrls } from "@/server/routers/contentstack/destinationCityPage/utils"
import {
contentStackBaseWithServiceProcedure,
publicProcedure,
@@ -18,15 +17,10 @@ import { toApiLang } from "@/server/utils"
import { generateChildrenString } from "@/components/HotelReservation/utils"
import { getCacheClient } from "@/services/dataCache"
import { cache } from "@/utils/cache"
import { removeMultipleSlashes } from "@/utils/url"
import { getHotelPageUrls } from "../contentstack/hotelPage/utils"
import { getVerifiedUser } from "../user/query"
import { additionalDataSchema } from "./schemas/hotel/include/additionalData"
import {
type GetLocationsUrlsData,
locationsUrlsSchema,
} from "./schemas/location/urls"
import { meetingRoomsSchema } from "./schemas/meetingRoom"
import {
ancillaryPackageInputSchema,
@@ -1532,43 +1526,32 @@ export const hotelQueryRouter = router({
JSON.stringify({ query: { lang } })
)
const response = await request<GetLocationsUrlsData>(
GetLocationsUrls,
{ locale: lang },
{
key: `${lang}:${procedureName}`,
ttl: "max",
}
)
if (!response.data) {
const [hotelPageUrlsResult, cityPageUrlsResult] =
await Promise.allSettled([
getHotelPageUrls(lang),
getCityPageUrls(lang),
])
if (
hotelPageUrlsResult.status === "rejected" ||
cityPageUrlsResult.status === "rejected"
) {
locationsUrlsFailCounter.add(1, {
lang,
error_type: "no data",
response: JSON.stringify(response),
error_type: "no_data",
response: JSON.stringify({
hotelPageUrlsResult,
cityPageUrlsResult,
}),
})
console.error(`${procedureName}: no data`, {
variables: { lang },
error_type: "no data",
response,
})
return null
}
const locationsUrls = locationsUrlsSchema.safeParse(response.data)
if (!locationsUrls.success) {
locationsUrlsFailCounter.add(1, {
lang,
error_type: "validation_error",
error: JSON.stringify(locationsUrls.error),
})
console.error(`${procedureName}: validation error`, {
variables: { lang },
error_type: "validation_error",
error: locationsUrls.error,
error_type: "no_data",
response: {
hotelPageUrlsResult,
cityPageUrlsResult,
},
})
return null
@@ -1580,16 +1563,10 @@ export const hotelQueryRouter = router({
variables: { lang },
})
const { data } = locationsUrls
data.hotels = data.hotels.map((hotel) => {
hotel.url = removeMultipleSlashes(`/${lang}/${hotel.url}`)
return hotel
})
data.cities = data.cities.map((city) => {
city.url = removeMultipleSlashes(`/${lang}/${city.url}`)
return city
})
return locationsUrls.data
return {
hotels: hotelPageUrlsResult.value,
cities: cityPageUrlsResult.value,
}
}),
}),
map: router({