feat(SW-176): rebase
This commit is contained in:
@@ -218,6 +218,97 @@ export const hotelQueryRouter = router({
|
|||||||
roomCategories,
|
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({
|
rates: router({
|
||||||
get: publicProcedure
|
get: publicProcedure
|
||||||
.input(getRatesInputSchema)
|
.input(getRatesInputSchema)
|
||||||
|
|||||||
Reference in New Issue
Block a user