fix: cache hotel response
This commit is contained in:
@@ -7,7 +7,7 @@ import { productTypeSchema } from "./schemas/availability/productType"
|
||||
import { citySchema } from "./schemas/city"
|
||||
import {
|
||||
attributesSchema,
|
||||
includesSchema,
|
||||
includedSchema,
|
||||
relationshipsSchema as hotelRelationshipsSchema,
|
||||
} from "./schemas/hotel"
|
||||
import { locationCitySchema } from "./schemas/location/city"
|
||||
@@ -18,7 +18,13 @@ import { relationshipsSchema } from "./schemas/relationships"
|
||||
import { roomConfigurationSchema } from "./schemas/roomAvailability/configuration"
|
||||
import { rateDefinitionSchema } from "./schemas/roomAvailability/rateDefinition"
|
||||
|
||||
import type { AdditionalData, City, NearbyHotel, Restaurant, Room } from "@/types/hotel"
|
||||
import type {
|
||||
AdditionalData,
|
||||
City,
|
||||
NearbyHotel,
|
||||
Restaurant,
|
||||
Room,
|
||||
} from "@/types/hotel"
|
||||
|
||||
// NOTE: Find schema at: https://aks-test.scandichotels.com/hotel/swagger/v1/index.html
|
||||
export const hotelSchema = z
|
||||
@@ -38,10 +44,13 @@ export const hotelSchema = z
|
||||
}),
|
||||
// NOTE: We can pass an "include" param to the hotel API to retrieve
|
||||
// additional data for an individual hotel.
|
||||
included: includesSchema,
|
||||
included: includedSchema,
|
||||
})
|
||||
.transform(({ data: { attributes, ...data }, included }) => {
|
||||
const additionalData = included.find((inc): inc is AdditionalData => inc!.type === "additionalData")
|
||||
const additionalData =
|
||||
included.find(
|
||||
(inc): inc is AdditionalData => inc!.type === "additionalData"
|
||||
) ?? ({} as AdditionalData)
|
||||
const cities = included.filter((inc): inc is City => inc!.type === "cities")
|
||||
const nearbyHotels = included.filter(
|
||||
(inc): inc is NearbyHotel => inc!.type === "hotels"
|
||||
@@ -262,4 +271,4 @@ export const getNearbyHotelIdsSchema = z
|
||||
})
|
||||
),
|
||||
})
|
||||
.transform((data) => data.data.map((hotel) => hotel.id))
|
||||
.transform((data) => data.data.map((hotel) => hotel.id))
|
||||
|
||||
Reference in New Issue
Block a user