Files
web/server/routers/user/output.ts
Christel Westerberg 058f0cc898 feat: add hotel image
2024-05-14 10:33:15 +02:00

92 lines
2.3 KiB
TypeScript

import { z } from "zod"
import { countriesMap } from "@/components/TempDesignSystem/Form/Country/countries"
export const getUserSchema = z.object({
address: z.object({
city: z.string().optional(),
country: z.nativeEnum(countriesMap),
streetAddress: z.string().optional(),
zipCode: z.string(),
}),
dateOfBirth: z.string(),
email: z.string().email(),
name: z.string(),
language: z.string(),
lastName: z.string(),
membership: z.object({
currentPoints: z.number(),
expirationDate: z.string(),
membershipNumber: z.string(),
memberSince: z.string(),
}),
phoneNumber: z.string(),
profileId: z.string(),
})
// Schema is the same for upcoming and previous stays endpoints
export const getStaysSchema = z.object({
data: z.array(
z.object({
attributes: z.object({
hotelOperaId: z.string(),
hotelInformation: z.object({
hotelContent: z.object({
images: z.object({
metaData: z.object({
title: z.string(),
altText: z.string(),
altText_En: z.string(),
copyRight: z.string(),
}),
imageSizes: z.object({
tiny: z.string(),
small: z.string(),
medium: z.string(),
large: z.string(),
}),
}),
}),
hotelName: z.string(),
cityName: z.string().nullable(),
}),
confirmationNumber: z.string(),
checkinDate: z.string(),
checkoutDate: z.string(),
isWebAppOrigin: z.boolean(),
}),
relationships: z.object({
hotel: z.object({
links: z.object({
related: z.string(),
}),
data: z.object({
id: z.string(),
type: z.string(),
}),
}),
}),
type: z.string(),
id: z.string(),
links: z.object({
self: z.object({
href: z.string(),
meta: z.object({
method: z.string(),
}),
}),
}),
})
),
links: z.object({
self: z.string(),
offset: z.number(),
limit: z.number(),
totalCount: z.number(),
}),
})
type GetStaysData = z.infer<typeof getStaysSchema>
export type Stay = GetStaysData["data"][number]