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({ const detailedFacilitySchema = z.object({
id: z.nativeEnum(FacilityEnum), id: z.number(),
name: z.string(), name: z.string(),
public: z.boolean(), public: z.boolean(),
sortOrder: z.number(), sortOrder: z.number(),
@@ -389,6 +389,9 @@ const hotelFactsSchema = z.object({
yearBuilt: z.string(), yearBuilt: z.string(),
}) })
type DetailedFacility = { id: FacilityEnum } & z.infer<
typeof detailedFacilitySchema
>
export const hotelAttributesSchema = z.object({ export const hotelAttributesSchema = z.object({
accessibilityElevatorPitchText: z.string().optional(), accessibilityElevatorPitchText: z.string().optional(),
address: addressSchema, address: addressSchema,
@@ -396,11 +399,15 @@ export const hotelAttributesSchema = z.object({
cityName: z.string(), cityName: z.string(),
conferencesAndMeetings: facilitySchema.optional(), conferencesAndMeetings: facilitySchema.optional(),
contactInformation: contactInformationSchema, contactInformation: contactInformationSchema,
detailedFacilities: z detailedFacilities: z.array(detailedFacilitySchema).transform(
.array(detailedFacilitySchema) (facilities) =>
.transform((facilities) => facilities
facilities.sort((a, b) => b.sortOrder - a.sortOrder) // 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(), gallery: gallerySchema.optional(),
galleryImages: z.array(imageSchema).optional(), galleryImages: z.array(imageSchema).optional(),
healthAndWellness: facilitySchema.optional(), healthAndWellness: facilitySchema.optional(),