feat: add router for filters
This commit is contained in:
@@ -13,3 +13,7 @@ export const getHotelInputSchema = z.object({
|
||||
export const getRatesInputSchema = z.object({
|
||||
hotelId: z.string(),
|
||||
})
|
||||
|
||||
export const getFiltersInputSchema = z.object({
|
||||
hotelId: z.string(),
|
||||
})
|
||||
|
||||
@@ -481,3 +481,14 @@ const Rate = z.object({
|
||||
export const getRatesSchema = z.array(Rate)
|
||||
|
||||
export type Rate = z.infer<typeof Rate>
|
||||
|
||||
const HotelFilter = z.object({
|
||||
filter: z.object({
|
||||
roomFacilities: z.array(z.string()),
|
||||
hotelFacilities: z.array(z.string()),
|
||||
hotelSurroundings: z.array(z.string()),
|
||||
}),
|
||||
})
|
||||
|
||||
export const getFiltersSchema = z.array(HotelFilter)
|
||||
export type Filter = z.infer<typeof HotelFilter>
|
||||
|
||||
@@ -2,8 +2,18 @@ import * as api from "@/lib/api"
|
||||
import { badRequestError } from "@/server/errors/trpc"
|
||||
import { publicProcedure, router } from "@/server/trpc"
|
||||
|
||||
import { getHotelInputSchema, getRatesInputSchema } from "./input"
|
||||
import { getHotelDataSchema, getRatesSchema, RoomSchema } from "./output"
|
||||
import {
|
||||
getFiltersInputSchema,
|
||||
getHotelInputSchema,
|
||||
getRatesInputSchema,
|
||||
} from "./input"
|
||||
import {
|
||||
getFiltersSchema,
|
||||
getHotelDataSchema,
|
||||
getRatesSchema,
|
||||
RoomSchema,
|
||||
} from "./output"
|
||||
import tempFilterData from "./tempFilterData.json"
|
||||
import tempHotelData from "./tempHotelData.json"
|
||||
import tempRatesData from "./tempRatesData.json"
|
||||
import { toApiLang } from "./utils"
|
||||
@@ -90,4 +100,17 @@ export const hotelQueryRouter = router({
|
||||
|
||||
return validatedHotelData.data
|
||||
}),
|
||||
getFilters: publicProcedure
|
||||
.input(getFiltersInputSchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
const validateFilterData = getFiltersSchema.safeParse(tempFilterData)
|
||||
|
||||
if (!validateFilterData.success) {
|
||||
console.info(`Get Individual Rates Data - Verified Data Error`)
|
||||
console.error(validateFilterData.error)
|
||||
throw badRequestError()
|
||||
}
|
||||
|
||||
return validateFilterData.data
|
||||
}),
|
||||
})
|
||||
|
||||
26
server/routers/hotels/tempFilterData.json
Normal file
26
server/routers/hotels/tempFilterData.json
Normal file
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"filter": {
|
||||
"roomFacilities": ["Balcony", "Bathub", "View", "Conntecting doors"],
|
||||
"hotelFacilities": [
|
||||
"Parking inside",
|
||||
"Parking outside",
|
||||
"Parking electric",
|
||||
"Sauna",
|
||||
"Pool",
|
||||
"Restaurant",
|
||||
"Bar",
|
||||
"Sky/rooftop bar",
|
||||
"Gym",
|
||||
"Coworking"
|
||||
],
|
||||
"hotelSurroundings": [
|
||||
"Beach",
|
||||
"Lake or sea",
|
||||
"Hiking",
|
||||
"Mountains",
|
||||
"Golf course"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user