Merged in fix/detailed-facilities-validation (pull request #1108)

fix(SW-1260): allow unrecognized hotel facilities

* fix(SW-1260): allow unrecognized hotel facilities

Before this we only allowed hotel facilities that we know about (ID:s in
an enum). Now we instead allow everything, but filter away the ones we
don't know about.


Approved-by: Christel Westerberg
This commit is contained in:
Niclas Edenvin
2024-12-19 09:29:24 +00:00
parent 3087bd918b
commit a3f8c954e2

View File

@@ -124,7 +124,7 @@ const hotelContentSchema = z.object({
})
const detailedFacilitySchema = z.object({
id: z.nativeEnum(FacilityEnum),
id: z.number(),
name: z.string(),
public: z.boolean(),
sortOrder: z.number(),
@@ -389,6 +389,9 @@ const hotelFactsSchema = z.object({
yearBuilt: z.string(),
})
type DetailedFacility = { id: FacilityEnum } & z.infer<
typeof detailedFacilitySchema
>
export const hotelAttributesSchema = z.object({
accessibilityElevatorPitchText: z.string().optional(),
address: addressSchema,
@@ -396,11 +399,15 @@ export const hotelAttributesSchema = z.object({
cityName: z.string(),
conferencesAndMeetings: facilitySchema.optional(),
contactInformation: contactInformationSchema,
detailedFacilities: z
.array(detailedFacilitySchema)
.transform((facilities) =>
facilities.sort((a, b) => b.sortOrder - a.sortOrder)
),
detailedFacilities: z.array(detailedFacilitySchema).transform(
(facilities) =>
facilities
// Filter away facilities with ID:s that we don't recognize
.filter(
(f) => f.id !== undefined && f.id !== null && f.id in FacilityEnum
)
.sort((a, b) => b.sortOrder - a.sortOrder) as DetailedFacility[]
),
gallery: gallerySchema.optional(),
galleryImages: z.array(imageSchema).optional(),
healthAndWellness: facilitySchema.optional(),