import { createCounter } from "@scandic-hotels/common/telemetry" import { router } from "../../.." import { notFound } from "../../../errors" import { GetUsePointsModal, GetUsePointsModalRefs, } from "../../../graphql/Query/UsePointsModal.graphql" import { request } from "../../../graphql/request" import { contentstackBaseProcedure } from "../../../procedures" import { type UsePointsModalData, type UsePointsModalRefsData, usePointsModalRefsSchema, usePointsModalSchema, } from "./output" export const usePointsModalQueryRouter = router({ get: contentstackBaseProcedure.query(async ({ ctx }) => { const { lang, uid } = ctx const getRefsCounter = createCounter( "trpc.contentstack", "usePointsModal.get.refs" ) const metricsRefs = getRefsCounter.init({ lang, uid, }) metricsRefs.start() const refsResponse = await request( GetUsePointsModalRefs, { locale: lang }, { key: `contentstack:usePointsModal:${lang}:refs`, ttl: "max", } ) if (!refsResponse.data) { const notFoundError = notFound(refsResponse) metricsRefs.noDataError() throw notFoundError } const validatedRefsData = usePointsModalRefsSchema.safeParse( refsResponse.data ) if (!validatedRefsData.success) { metricsRefs.validationError(validatedRefsData.error) return null } metricsRefs.success() const getCounter = createCounter("trpc.contentstack", "usePointsModal.get") const metrics = getCounter.init({ lang, uid, }) metrics.start() const response = await request( GetUsePointsModal, { locale: lang }, { key: `contentstack:usePointsModal:${lang}`, ttl: "max", } ) if (!response.data) { const notFoundError = notFound(response) metrics.noDataError() throw notFoundError } const validatedResponse = usePointsModalSchema.safeParse(response.data) if (!validatedResponse.success) { metrics.validationError(validatedResponse.error) return null } metrics.success() return validatedResponse.data }), })