diff --git a/lib/api/endpoints.ts b/lib/api/endpoints.ts index d683e7896..1c1570277 100644 --- a/lib/api/endpoints.ts +++ b/lib/api/endpoints.ts @@ -11,6 +11,7 @@ export namespace endpoints { friendTransactions = "profile/v1/Transaction/friendTransactions", upcomingStays = "booking/v1/Stays/future", previousStays = "booking/v1/Stays/past", + hotel = "hotel/v1/Hotels", } } diff --git a/server/index.ts b/server/index.ts index b424580ce..b349d26cf 100644 --- a/server/index.ts +++ b/server/index.ts @@ -1,11 +1,13 @@ /** Routers */ import { contentstackRouter } from "./routers/contentstack" +import { hotelsRouter } from "./routers/hotels" import { userRouter } from "./routers/user" import { router } from "./trpc" export const appRouter = router({ contentstack: contentstackRouter, user: userRouter, + hotel: hotelsRouter, }) export type AppRouter = typeof appRouter diff --git a/server/routers/hotels/index.ts b/server/routers/hotels/index.ts new file mode 100644 index 000000000..5ea00a5de --- /dev/null +++ b/server/routers/hotels/index.ts @@ -0,0 +1,5 @@ +import { mergeRouters } from "@/server/trpc" + +import { hotelQueryRouter } from "./query" + +export const hotelsRouter = mergeRouters(hotelQueryRouter) diff --git a/server/routers/hotels/input.ts b/server/routers/hotels/input.ts new file mode 100644 index 000000000..c9c28e1da --- /dev/null +++ b/server/routers/hotels/input.ts @@ -0,0 +1,5 @@ +import { z } from "zod" + +export const getHotelInputSchema = z.object({ + hotelId: z.string(), +}) diff --git a/server/routers/hotels/query.ts b/server/routers/hotels/query.ts new file mode 100644 index 000000000..bc90f0a3c --- /dev/null +++ b/server/routers/hotels/query.ts @@ -0,0 +1,40 @@ +import * as api from "@/lib/api" +import { protectedProcedure, publicProcedure, router } from "@/server/trpc" + +import { getHotelInputSchema } from "./input" + +export const hotelQueryRouter = router({ + // TODO: Should be public. + getHotel: protectedProcedure + .input(getHotelInputSchema) + .query(async ({ input, ctx }) => { + const { hotelId } = input + + const params = new URLSearchParams() + params.set("hotelId", hotelId.toString()) + console.log("hotel fetch start") + const apiResponse = await api.get( + api.endpoints.v1.hotel, + { + cache: "no-store", + headers: { + Authorization: `Bearer ${ctx.session.token.access_token}`, + }, + }, + params + ) + console.log("apiResponse", apiResponse) + + if (!apiResponse.ok) { + console.info(`API Response Failed - Getting Hotel`) + console.error(apiResponse) + return null + } + + const apiJson = await apiResponse.json() + console.log("apiJson", apiJson) + // return null + // TODO: validate apiJson. + return apiJson + }), +})