Merged in feature/SW-3572-hotel-data-endpoint (pull request #3051)

SW-3572 API route for listing hotels per city or country

* wip hotel data endpoint

* Correct route params type

* wip

* skip static paths call

* timeout when getting destinations take too long

* call noStore when we get a timeout

* add cache-control headers

* .

* .

* .

* wip

* wip

* wip

* wip

* add route for getting hotels per country

* include city when listing by country

* fix distance SI unit

* fix sorting

* Merge branch 'master' of bitbucket.org:scandic-swap/web into feature/SW-3572-hotel-data-endpoint

* packages/tracking passWithNoTests

* revalidate must be static value

* remove oxc reference

* cleanup

* cleanup hotel api route

* feat(SW-3572): cleanup error handling


Approved-by: Anton Gunnarsson
This commit is contained in:
Joakim Jäderberg
2025-11-03 12:10:22 +00:00
parent e8626d56af
commit 15a2da333d
25 changed files with 1227 additions and 249 deletions

View File

@@ -1,7 +1,8 @@
import { Lang } from "@scandic-hotels/common/constants/language"
import { getLocations } from "../utils"
import { isCityLocation } from "../../../types/locations"
import { getHotelIdsByCityId } from "./getHotelIdsByCityId"
import { getLocationsByCountries } from "./getLocationsByCountries"
export async function getCityByCityIdentifier({
cityIdentifier,
@@ -12,17 +13,18 @@ export async function getCityByCityIdentifier({
lang: Lang
serviceToken: string
}) {
const locations = await getLocations({
const locations = await getLocationsByCountries({
lang,
citiesByCountry: null,
serviceToken,
})
if (!locations || "error" in locations) {
if (!locations || locations.length === 0) {
return null
}
const city = locations
.filter((loc) => loc.type === "cities")
.filter(isCityLocation)
.find((loc) => loc.cityIdentifier === cityIdentifier)
return city ?? null
@@ -46,5 +48,6 @@ export async function getHotelIdsByCityIdentifier(
cityId: city.id,
serviceToken,
})
return hotelIds
}