fix(BOOK-672): remove unused relationsships that threw when missing * fix(BOOK-672): remove unused relationsships that threw when missing Approved-by: Linus Flood
72 lines
2.5 KiB
TypeScript
72 lines
2.5 KiB
TypeScript
import { z } from "zod"
|
|
|
|
import {
|
|
nullableArrayObjectValidator,
|
|
nullableArrayStringValidator,
|
|
} from "@scandic-hotels/common/utils/zod/arrayValidator"
|
|
import { nullableNumberValidator } from "@scandic-hotels/common/utils/zod/numberValidator"
|
|
import { nullableStringValidator } from "@scandic-hotels/common/utils/zod/stringValidator"
|
|
|
|
import { addressSchema } from "./hotel/address"
|
|
import { contactInformationSchema } from "./hotel/contactInformation"
|
|
import { hotelContentSchema } from "./hotel/content"
|
|
import { detailedFacilitiesSchema } from "./hotel/detailedFacility"
|
|
import { hotelFactsSchema } from "./hotel/facts"
|
|
import { healthFacilitiesSchema } from "./hotel/healthFacilities"
|
|
import { includeSchema } from "./hotel/include"
|
|
import { locationSchema } from "./hotel/location"
|
|
import { merchantInformationSchema } from "./hotel/merchantInformation"
|
|
import { parkingSchema } from "./hotel/parking"
|
|
import { pointOfInterestsSchema } from "./hotel/poi"
|
|
import { ratingsSchema } from "./hotel/rating"
|
|
import { rewardNightSchema } from "./hotel/rewardNight"
|
|
import { socialMediaSchema } from "./hotel/socialMedia"
|
|
import { specialAlertsSchema } from "./hotel/specialAlerts"
|
|
import { imageSchema } from "./image"
|
|
|
|
export const attributesSchema = z.object({
|
|
address: addressSchema,
|
|
cityId: nullableStringValidator,
|
|
cityName: nullableStringValidator,
|
|
contactInformation: contactInformationSchema,
|
|
countryCode: nullableStringValidator,
|
|
detailedFacilities: detailedFacilitiesSchema,
|
|
galleryImages: z
|
|
.array(imageSchema)
|
|
.nullish()
|
|
.transform((arr) => (arr ? arr.filter(Boolean) : [])),
|
|
healthFacilities: healthFacilitiesSchema,
|
|
hotelContent: hotelContentSchema,
|
|
hotelFacts: hotelFactsSchema,
|
|
hotelType: nullableStringValidator,
|
|
isActive: z.boolean(),
|
|
isPublished: z.boolean(),
|
|
keywords: nullableArrayStringValidator,
|
|
location: locationSchema,
|
|
merchantInformationData: merchantInformationSchema,
|
|
name: nullableStringValidator,
|
|
operaId: nullableStringValidator,
|
|
parking: nullableArrayObjectValidator(parkingSchema),
|
|
pointsOfInterest: pointOfInterestsSchema,
|
|
ratings: ratingsSchema,
|
|
rewardNight: rewardNightSchema,
|
|
socialMedia: socialMediaSchema,
|
|
specialAlerts: specialAlertsSchema,
|
|
vat: nullableNumberValidator,
|
|
})
|
|
|
|
export const includedSchema = z
|
|
.array(includeSchema)
|
|
.default([])
|
|
.transform((data) =>
|
|
data.filter((item) => {
|
|
if (item) {
|
|
if ("isPublished" in item && item.isPublished === false) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
return false
|
|
})
|
|
)
|