feat(SW-176): rebase

This commit is contained in:
Fredrik Thorsson
2024-08-28 16:39:59 +02:00
parent 9112941026
commit 864f3cdaf2

View File

@@ -218,6 +218,97 @@ export const hotelQueryRouter = router({
roomCategories,
}
}),
availability: serviceProcedure
.input(getAvailabilityInputSchema)
.query(async ({ input, ctx }) => {
const { cityId, roomStayStartDate, roomStayEndDate, adults } = input
const params: Record<string, string | number> = {
roomStayStartDate,
roomStayEndDate,
adults,
}
availabilityCounter.add(1, {
cityId,
roomStayStartDate,
roomStayEndDate,
adults,
})
console.info(
"api.hotels.availability start",
JSON.stringify({ query: { cityId, params } })
)
const apiResponse = await api.get(
`${api.endpoints.v0.availability}/${cityId}`,
{
cache: "no-store",
headers: {
Authorization: `Bearer ${ctx.serviceToken}`,
},
},
params
)
if (!apiResponse.ok) {
const text = await apiResponse.text()
availabilityFailCounter.add(1, {
cityId,
roomStayStartDate,
roomStayEndDate,
adults,
error_type: "http_error",
error: JSON.stringify({
status: apiResponse.status,
statusText: apiResponse.statusText,
text,
}),
})
console.error(
"api.hotels.availability error",
JSON.stringify({
query: { cityId, params },
error: {
status: apiResponse.status,
statusText: apiResponse.statusText,
text,
},
})
)
return null
}
const apiJson = await apiResponse.json()
const validateAvailabilityData = getAvailabilitySchema.safeParse(apiJson)
if (!validateAvailabilityData.success) {
availabilityFailCounter.add(1, {
cityId,
roomStayStartDate,
roomStayEndDate,
adults,
error_type: "validation_error",
error: JSON.stringify(validateAvailabilityData.error),
})
console.error(
"api.hotels.availability validation error",
JSON.stringify({
query: { cityId, params },
error: validateAvailabilityData.error,
})
)
throw badRequestError()
}
availabilitySuccessCounter.add(1, {
cityId,
roomStayStartDate,
roomStayEndDate,
adults,
})
console.info(
JSON.stringify({
query: { cityId, params: params },
})
)
return {
availability: validateAvailabilityData.data,
}
}),
rates: router({
get: publicProcedure
.input(getRatesInputSchema)