import { createCounter } from "@scandic-hotels/common/telemetry" import { router } from "../../.." import { notFoundError } from "../../../errors" import { GetUsePointsModal } from "../../../graphql/Query/UsePointsModal.graphql" import { request } from "../../../graphql/request" import { contentstackBaseProcedure } from "../../../procedures" import { generateTag } from "../../../utils/generateTag" import { type UsePointsModalData, usePointsModalSchema } from "./output" export const usePointsModalQueryRouter = router({ get: contentstackBaseProcedure.query(async ({ ctx }) => { const { lang, uid } = ctx const getCounter = createCounter("trpc.contentstack.usePointsModal.get") const metrics = getCounter.init({ lang, uid, }) metrics.start() const variables = { locale: lang } const response = await request( GetUsePointsModal, variables, { key: generateTag(lang, "usepointsmodal"), ttl: "max", } ) if (!response.data) { metrics.noDataError() throw notFoundError({ message: "GetUsePointsModal returned no data", errorDetails: variables, }) } const validatedResponse = usePointsModalSchema.safeParse(response.data) if (!validatedResponse.success) { metrics.validationError(validatedResponse.error) return null } metrics.success() return validatedResponse.data }), })