Merged in fix/metadata-schema (pull request #2893)
fix: Updated metadata schema to handle transformed hotel data * fix: Updated metadata schema to handle transformed hotel data Approved-by: Linus Flood
This commit is contained in:
committed by
Linus Flood
parent
57315baf97
commit
4f151b143e
@@ -7,11 +7,8 @@ import {
|
||||
import { myStay } from "@scandic-hotels/common/constants/routes/myStay"
|
||||
import { transformedImageVaultAssetSchema } from "@scandic-hotels/common/utils/imageVault"
|
||||
|
||||
import { attributesSchema as hotelAttributesSchema } from "../../../routers/hotels/schemas/hotel"
|
||||
import { Country } from "../../../types/country"
|
||||
import { RTETypeEnum } from "../../../types/RTEenums"
|
||||
import { additionalDataAttributesSchema } from "../../hotels/schemas/hotel/include/additionalData"
|
||||
import { imageSchema } from "../../hotels/schemas/image"
|
||||
import { destinationFilterSchema } from "../schemas/destinationFilters"
|
||||
import { systemSchema } from "../schemas/system"
|
||||
|
||||
@@ -42,15 +39,110 @@ const metaDataBlocksSchema = z
|
||||
.object({
|
||||
json: metaDataJsonSchema,
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
.nullish(),
|
||||
})
|
||||
.optional()
|
||||
.nullable(),
|
||||
.nullish(),
|
||||
})
|
||||
)
|
||||
.optional()
|
||||
.nullable()
|
||||
.nullish()
|
||||
|
||||
const metaDataImageSchema = z.object({
|
||||
src: z.string().nullish(),
|
||||
altText: z.string().nullish(),
|
||||
altText_En: z.string().nullish(),
|
||||
})
|
||||
|
||||
const metaDataHotelDataSchema = z
|
||||
.object({
|
||||
name: z.string(),
|
||||
detailedFacilities: z
|
||||
.array(
|
||||
z.object({
|
||||
name: z.string(),
|
||||
})
|
||||
)
|
||||
.nullish(),
|
||||
healthFacilities: z
|
||||
.array(
|
||||
z
|
||||
.object({
|
||||
content: z
|
||||
.object({
|
||||
images: z.array(metaDataImageSchema),
|
||||
})
|
||||
.nullish(),
|
||||
})
|
||||
.nullish()
|
||||
)
|
||||
.nullish(),
|
||||
translatedCityName: z.string(),
|
||||
})
|
||||
.nullish()
|
||||
|
||||
const metaDataAdditionalHotelDataSchema = z
|
||||
.object({
|
||||
gallery: z
|
||||
.object({
|
||||
heroImages: z.array(metaDataImageSchema).nullish(),
|
||||
smallerImages: z.array(metaDataImageSchema).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
hotelParking: z
|
||||
.object({
|
||||
nameInUrl: z.string().nullish(),
|
||||
elevatorPitch: z.string().nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
healthAndFitness: z
|
||||
.object({
|
||||
nameInUrl: z.string().nullish(),
|
||||
elevatorPitch: z.string().nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
hotelSpecialNeeds: z
|
||||
.object({
|
||||
nameInUrl: z.string().nullish(),
|
||||
elevatorPitch: z.string().nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
meetingRooms: z
|
||||
.object({
|
||||
nameInUrl: z.string().nullish(),
|
||||
elevatorPitch: z.string().nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
parkingImages: z
|
||||
.object({
|
||||
heroImages: z.array(metaDataImageSchema).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
accessibility: z
|
||||
.object({
|
||||
heroImages: z.array(metaDataImageSchema).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
conferencesAndMeetings: z
|
||||
.object({
|
||||
heroImages: z.array(metaDataImageSchema).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
})
|
||||
.nullish()
|
||||
|
||||
const metaDataHotelRestaurantsSchema = z
|
||||
.array(
|
||||
z.object({
|
||||
nameInUrl: z.string().nullish(),
|
||||
elevatorPitch: z.string().nullish(),
|
||||
name: z.string().nullish(),
|
||||
content: z
|
||||
.object({
|
||||
images: z.array(metaDataImageSchema).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
})
|
||||
)
|
||||
.nullish()
|
||||
|
||||
export const seoMetadataSchema = z
|
||||
.object({
|
||||
@@ -120,45 +212,9 @@ export const rawMetadataSchema = z.object({
|
||||
.string()
|
||||
.nullish()
|
||||
.transform((id) => id?.trim() || null),
|
||||
hotelData: hotelAttributesSchema
|
||||
.pick({
|
||||
name: true,
|
||||
detailedFacilities: true,
|
||||
hotelContent: true,
|
||||
healthFacilities: true,
|
||||
})
|
||||
.merge(
|
||||
z.object({
|
||||
translatedCityName: z.string(),
|
||||
})
|
||||
)
|
||||
.nullish(),
|
||||
additionalHotelData: additionalDataAttributesSchema
|
||||
.pick({
|
||||
gallery: true,
|
||||
hotelParking: true,
|
||||
healthAndFitness: true,
|
||||
hotelSpecialNeeds: true,
|
||||
meetingRooms: true,
|
||||
parkingImages: true,
|
||||
accessibility: true,
|
||||
conferencesAndMeetings: true,
|
||||
})
|
||||
.nullish(),
|
||||
hotelRestaurants: z
|
||||
.array(
|
||||
z.object({
|
||||
nameInUrl: z.string().nullish(),
|
||||
elevatorPitch: z.string().nullish(),
|
||||
name: z.string().nullish(),
|
||||
content: z
|
||||
.object({
|
||||
images: z.array(imageSchema).nullish(),
|
||||
})
|
||||
.nullish(),
|
||||
})
|
||||
)
|
||||
.nullish(),
|
||||
hotelData: metaDataHotelDataSchema,
|
||||
additionalHotelData: metaDataAdditionalHotelDataSchema,
|
||||
hotelRestaurants: metaDataHotelRestaurantsSchema,
|
||||
subpageUrl: z.string().nullish(),
|
||||
destinationData: z
|
||||
.object({
|
||||
|
||||
Reference in New Issue
Block a user