import { z } from "zod"

import {
  accountPageSchema,
  collectionPageSchema,
  contentPageSchema,
  destinationCityPageSchema,
  destinationCountryPageSchema,
  destinationOverviewPageSchema,
  hotelPageSchema,
  loyaltyPageSchema,
  startPageSchema,
  transformPageLink,
} from "../pageLinks"
import { imageSchema } from "./image"
import { imageContainerSchema } from "./imageContainer"

export const contentEmbedsSchema = z
  .discriminatedUnion("__typename", [
    imageContainerSchema,
    imageSchema,
    accountPageSchema,
    collectionPageSchema,
    contentPageSchema,
    destinationCityPageSchema,
    destinationCountryPageSchema,
    destinationOverviewPageSchema,
    hotelPageSchema,
    loyaltyPageSchema,
    startPageSchema,
  ])
  .transform((data) => {
    const link = transformPageLink(data)
    if (link) {
      return link
    }
    return data
  })
