From a3f8c954e266523f87ae16315be995e176b7dd11 Mon Sep 17 00:00:00 2001 From: Niclas Edenvin Date: Thu, 19 Dec 2024 09:29:24 +0000 Subject: [PATCH] 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 --- server/routers/hotels/output.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/server/routers/hotels/output.ts b/server/routers/hotels/output.ts index ae35da556..2621d5ce8 100644 --- a/server/routers/hotels/output.ts +++ b/server/routers/hotels/output.ts @@ -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(),