From 249a5f6cb8ab9fa99dde59ca0b8f12981f6921c4 Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Tue, 5 Nov 2024 11:13:16 +0100 Subject: [PATCH] feat(SW-498): fixed tags for caching inside siteconfig query --- lib/graphql/Fragments/Alert.graphql | 3 +++ server/routers/contentstack/base/output.ts | 1 + server/routers/contentstack/base/query.ts | 16 +++++++++---- server/routers/contentstack/base/utils.ts | 28 +++++++++++++++++++++- 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/lib/graphql/Fragments/Alert.graphql b/lib/graphql/Fragments/Alert.graphql index 65d1d9cdb..f2cb56323 100644 --- a/lib/graphql/Fragments/Alert.graphql +++ b/lib/graphql/Fragments/Alert.graphql @@ -85,4 +85,7 @@ fragment AlertRef on Alert { json } } + system { + ...System + } } diff --git a/server/routers/contentstack/base/output.ts b/server/routers/contentstack/base/output.ts index 9fc8f3e53..6bc0bd9d4 100644 --- a/server/routers/contentstack/base/output.ts +++ b/server/routers/contentstack/base/output.ts @@ -816,6 +816,7 @@ const alertConnectionRefSchema = z.object({ node: z.object({ link: linkRefsSchema, sidepeek_content: sidepeekContentRefSchema, + system: systemSchema, }), }) ), diff --git a/server/routers/contentstack/base/query.ts b/server/routers/contentstack/base/query.ts index d312d6042..b45029eb8 100644 --- a/server/routers/contentstack/base/query.ts +++ b/server/routers/contentstack/base/query.ts @@ -79,6 +79,7 @@ import { getAlertPhoneContactData, getConnections, getFooterConnections, + getSiteConfigConnections, } from "./utils" import type { @@ -630,7 +631,7 @@ export const baseQueryRouter = router({ { cache: "force-cache", next: { - tags: [generateRefsResponseTag(lang, "siteConfig")], + tags: [generateRefsResponseTag(lang, "site_config")], }, } ) @@ -676,6 +677,14 @@ export const baseQueryRouter = router({ return null } + const connections = getSiteConfigConnections(validatedSiteConfigRef.data) + const siteConfigUid = responseRef.data.all_site_config.items[0].system.uid + + const tags = [ + generateTagsFromSystem(lang, connections), + generateTag(lang, siteConfigUid), + ].flat() + getSiteConfigRefSuccessCounter.add(1, { lang }) console.info( "contentstack.siteConfig.refs success", @@ -695,9 +704,7 @@ export const baseQueryRouter = router({ }, { cache: "force-cache", - next: { - tags: [`${lang}:siteConfig`], - }, + next: { tags }, } ), getContactConfig(lang), @@ -739,6 +746,7 @@ export const baseQueryRouter = router({ ) return null } + getSiteConfigSuccessCounter.add(1, { lang }) console.info( "contentstack.siteConfig success", diff --git a/server/routers/contentstack/base/utils.ts b/server/routers/contentstack/base/utils.ts index 2c9c13e2d..b25fc945c 100644 --- a/server/routers/contentstack/base/utils.ts +++ b/server/routers/contentstack/base/utils.ts @@ -5,7 +5,10 @@ import type { System } from "@/types/requests/system" import type { Edges } from "@/types/requests/utils/edges" import type { NodeRefs } from "@/types/requests/utils/refs" import type { HeaderRefs } from "@/types/trpc/routers/contentstack/header" -import type { AlertOutput } from "@/types/trpc/routers/contentstack/siteConfig" +import type { + AlertOutput, + GetSiteConfigRefData, +} from "@/types/trpc/routers/contentstack/siteConfig" import type { ContactConfig } from "./output" export function getConnections({ header }: HeaderRefs) { @@ -70,6 +73,29 @@ export function getFooterConnections(refs: FooterRefDataRaw) { return connections } +export function getSiteConfigConnections(refs: GetSiteConfigRefData) { + const siteConfigData = refs.all_site_config.items[0] + const connections: System["system"][] = [] + + const alertConnection = siteConfigData.sitewide_alert.alertConnection + + alertConnection.edges.forEach(({ node }) => { + connections.push(node.system) + + const link = node.link.link + if (link) { + connections.push(link) + } + node.sidepeek_content.content.embedded_itemsConnection.edges.forEach( + ({ node }) => { + connections.push(node.system) + } + ) + }) + + return connections +} + export function getAlertPhoneContactData( alert: AlertOutput, contactConfig: ContactConfig