From a43dc8a16f30b272e49a3b84b1bddc1b931d8f75 Mon Sep 17 00:00:00 2001 From: Arvid Norlin Date: Mon, 29 Apr 2024 16:48:47 +0200 Subject: [PATCH] refactor: DRY up trpc query --- .../(protected)/my-pages/benefits/page.tsx | 9 +- .../(protected)/my-pages/overview/page.tsx | 9 +- .../routers/contentstack/accountPage/input.ts | 5 +- .../routers/contentstack/accountPage/query.ts | 160 ++++++------------ 4 files changed, 62 insertions(+), 121 deletions(-) diff --git a/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx b/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx index 9ce6ff871..237b7a377 100644 --- a/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/benefits/page.tsx @@ -7,11 +7,10 @@ import styles from "./page.module.css" import type { LangParams, PageArgs } from "@/types/params" export default async function BenefitsPage({ params }: PageArgs) { - const accountPage = await serverClient().contentstack.accountPage.getBenefits( - { - lang: params.lang, - } - ) + const accountPage = await serverClient().contentstack.accountPage.get({ + url: "/my-pages/benefits", + lang: params.lang, + }) return (
diff --git a/app/[lang]/(live)/(protected)/my-pages/overview/page.tsx b/app/[lang]/(live)/(protected)/my-pages/overview/page.tsx index e4b1e4477..a9b7f26e0 100644 --- a/app/[lang]/(live)/(protected)/my-pages/overview/page.tsx +++ b/app/[lang]/(live)/(protected)/my-pages/overview/page.tsx @@ -9,11 +9,10 @@ import styles from "./page.module.css" import type { LangParams, PageArgs } from "@/types/params" export default async function MyPageOverview({ params }: PageArgs) { - const accountPage = await serverClient().contentstack.accountPage.getOverview( - { - lang: params.lang, - } - ) + const accountPage = await serverClient().contentstack.accountPage.get({ + url: "/my-pages/overview", + lang: params.lang, + }) return ( diff --git a/server/routers/contentstack/accountPage/input.ts b/server/routers/contentstack/accountPage/input.ts index 3643659b8..e35efd8e4 100644 --- a/server/routers/contentstack/accountPage/input.ts +++ b/server/routers/contentstack/accountPage/input.ts @@ -2,4 +2,7 @@ import { z } from "zod" import { Lang } from "@/constants/languages" -export const getAccountPageInput = z.object({ lang: z.nativeEnum(Lang) }) +export const getAccountPageInput = z.object({ + url: z.string(), + lang: z.nativeEnum(Lang), +}) diff --git a/server/routers/contentstack/accountPage/query.ts b/server/routers/contentstack/accountPage/query.ts index 631354207..55a0d3a19 100644 --- a/server/routers/contentstack/accountPage/query.ts +++ b/server/routers/contentstack/accountPage/query.ts @@ -15,118 +15,58 @@ import { Edges } from "@/types/requests/utils/edges" import { RTEDocument } from "@/types/rte/node" export const accountPageQueryRouter = router({ - getOverview: publicProcedure - .input(getAccountPageInput) - .query(async ({ input }) => { - try { - const url = "/my-pages/overview" - const response = await request(GetAccountPage, { - locale: input.lang, - url, - }) + get: publicProcedure.input(getAccountPageInput).query(async ({ input }) => { + try { + const response = await request(GetAccountPage, { + locale: input.lang, + url: input.url, + }) - if (!response.data) { - throw badRequestError() - } + if (!response.data) { + throw badRequestError() + } - const validatedAccountPage = validateAccountPageSchema.safeParse( - response.data + const validatedAccountPage = validateAccountPageSchema.safeParse( + response.data + ) + + if (!validatedAccountPage.success) { + throw badRequestError() + } + // TODO: Make returned data nicer + const content = + validatedAccountPage.data.all_account_page.items[0].content.map( + (block) => { + switch (block.__typename) { + case ContentEntries.AccountPageContentDynamicContent: + case ContentEntries.AccountPageContentShortcuts: + return block + case ContentEntries.AccountPageContentTextContent: + return { + ...block, + text_content: { + content: { + json: block.text_content.content.json as RTEDocument, + embedded_itemsConnection: block.text_content.content + .embedded_itemsConnection as Edges, + }, + }, + } + default: + return null + } + } ) - if (!validatedAccountPage.success) { - throw badRequestError() - } - // TODO: Make returned data nicer - const content = - validatedAccountPage.data.all_account_page.items[0].content.map( - (block) => { - switch (block.__typename) { - case ContentEntries.AccountPageContentDynamicContent: - case ContentEntries.AccountPageContentShortcuts: - return block - case ContentEntries.AccountPageContentTextContent: - return { - ...block, - text_content: { - content: { - json: block.text_content.content.json as RTEDocument, - embedded_itemsConnection: block.text_content.content - .embedded_itemsConnection as Edges, - }, - }, - } - default: - return null - } - } - ) - - const accountPage = { - ...validatedAccountPage.data.all_account_page.items[0], - content, - } as AccountPage - return accountPage - } catch (error) { - console.info(`Get Account Page Overview Error`) - console.error(error) - throw internalServerError() - } - }), - getBenefits: publicProcedure - .input(getAccountPageInput) - .query(async ({ input }) => { - try { - const url = "/my-pages/benefits" - const response = await request(GetAccountPage, { - locale: input.lang, - url, - }) - - if (!response.data) { - throw badRequestError() - } - - const validatedAccountPage = validateAccountPageSchema.safeParse( - response.data - ) - - if (!validatedAccountPage.success) { - throw badRequestError() - } - - const content = - validatedAccountPage.data.all_account_page.items[0].content.map( - (block) => { - switch (block.__typename) { - case ContentEntries.AccountPageContentDynamicContent: - case ContentEntries.AccountPageContentShortcuts: - return block - case ContentEntries.AccountPageContentTextContent: - return { - ...block, - text_content: { - content: { - json: block.text_content.content.json as RTEDocument, - embedded_itemsConnection: block.text_content.content - .embedded_itemsConnection as Edges, - }, - }, - } - default: - return null - } - } - ) - - const accountPage = { - ...validatedAccountPage.data.all_account_page.items[0], - content, - } as AccountPage - return accountPage - } catch (error) { - console.info(`Get Account Page Benefits Error`) - console.error(error) - throw internalServerError() - } - }), + const accountPage = { + ...validatedAccountPage.data.all_account_page.items[0], + content, + } as AccountPage + return accountPage + } catch (error) { + console.info(`Get Account Page Overview Error`) + console.error(error) + throw internalServerError() + } + }), })