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(),