import { createCounter } from "@scandic-hotels/common/telemetry" import { getBooking } from "../getBooking" import type { Lang } from "@scandic-hotels/common/constants/language" export async function getLinkedReservations( { confirmationNumber, lang, }: { confirmationNumber: string lang: Lang }, token: string ): Promise>>[]> { const getLinkedReservationsCounter = createCounter( "booking.linkedReservations" ) const metricsGetLinkedReservations = getLinkedReservationsCounter.init({ confirmationNumber, }) metricsGetLinkedReservations.start() const booking = await getBooking({ confirmationNumber, lang }, token) if (!booking) { return [] } const linkedReservationsResults = await Promise.allSettled( booking.linkedReservations.map((linkedReservation) => getBooking( { confirmationNumber: linkedReservation.confirmationNumber, lang }, token ) ) ) const linkedReservations: NonNullable< Awaited> >[] = [] for (const linkedReservationsResult of linkedReservationsResults) { if (linkedReservationsResult.status !== "fulfilled") { metricsGetLinkedReservations.dataError(`Failed to get linked reservation`) continue } if (!linkedReservationsResult.value) { metricsGetLinkedReservations.dataError( `Unexpected value for linked reservation` ) continue } linkedReservations.push(linkedReservationsResult.value) } metricsGetLinkedReservations.success() return linkedReservations }