From 7bcea7272d017510d51d39a31a6d706086ca56e5 Mon Sep 17 00:00:00 2001 From: Jonas Carlsen Date: Fri, 14 Nov 2025 13:57:43 +0100 Subject: [PATCH] refactor: only support fetching grep results with page language --- src/api/searchApi.ts | 30 +++++++++++++--------------- src/resolvers/articleResolvers.ts | 22 +++----------------- src/resolvers/curriculumResolvers.ts | 12 ++++------- src/schema.ts | 8 ++++---- src/types/schema.d.ts | 4 ---- 5 files changed, 25 insertions(+), 51 deletions(-) diff --git a/src/api/searchApi.ts b/src/api/searchApi.ts index cd7d1975..b5d9a124 100644 --- a/src/api/searchApi.ts +++ b/src/api/searchApi.ts @@ -148,15 +148,18 @@ const transformResult = (result: MultiSearchSummaryDTO | NodeHitDTO, subjects: s }; }; -export const grepSearch = async (input: GrepSearchInputDTO, _context: Context): Promise => - client.POST("/search-api/v1/search/grep", { body: input }).then(resolveJsonOATS); +export const grepSearch = async (input: GrepSearchInputDTO, context: Context): Promise => + client + .POST("/search-api/v1/search/grep", { + body: { + language: context.language, + ...input, + }, + }) + .then(resolveJsonOATS); -export const competenceGoals = async ( - codes: string[], - language: string | undefined, - context: Context, -): Promise => { - const references = await grepSearch({ language, codes, pageSize: codes.length }, context); +export const competenceGoals = async (codes: string[], context: Context): Promise => { + const references = await grepSearch({ codes, pageSize: codes.length }, context); const competenceGoals = references.results.filter((r) => { return r.typename === "GrepKompetansemaalDTO"; }); @@ -198,16 +201,12 @@ export const competenceGoals = async ( }); }; -export const coreElements = async ( - codes: string[], - language: string | undefined, - context: Context, -): Promise => { +export const coreElements = async (codes: string[], context: Context): Promise => { if (!codes.length) return []; const coreElementCodes = codes.filter((c) => c.startsWith("KE")); if (!coreElementCodes.length) return []; - const fetched = await grepSearch({ codes: coreElementCodes, language, pageSize: 100 }, context); + const fetched = await grepSearch({ codes: coreElementCodes, pageSize: 100 }, context); const coreElements = fetched.results.filter((r) => { return r.typename === "GrepKjerneelementDTO"; }); @@ -234,11 +233,10 @@ export const fetchCompetenceGoalSetCodes = async (code: string, context: Context export const fetchCrossSubjectTopicsByCode = async ( inputCodes: string[], - language: string | undefined, context: Context, ): Promise => { const codes = inputCodes.filter((code) => code.startsWith("TT")); - const fetched = await grepSearch({ codes, language, pageSize: 100 }, context); + const fetched = await grepSearch({ codes, pageSize: 100 }, context); return fetched.results .filter((result) => result.typename === "GrepTverrfagligTemaDTO") .map((result) => { diff --git a/src/resolvers/articleResolvers.ts b/src/resolvers/articleResolvers.ts index ce3976db..79e278c5 100644 --- a/src/resolvers/articleResolvers.ts +++ b/src/resolvers/articleResolvers.ts @@ -39,15 +39,7 @@ export const resolvers = { Article: { async competenceGoals(article: ArticleV2DTO, _: any, context: ContextWithLoaders): Promise { if (!(article.grepCodes ?? []).length) return []; - - const language = - article.supportedLanguages?.find((lang) => lang === context.language) ?? - article.supportedLanguages?.[0] ?? - context.language; - const result = await grepSearch( - { codes: article.grepCodes.filter((code) => code.startsWith("KM")), language: language }, - context, - ); + const result = await grepSearch({ codes: article.grepCodes.filter((code) => code.startsWith("KM")) }, context); return result.results.map((hit) => { return { ...hit, @@ -58,11 +50,7 @@ export const resolvers = { }); }, async coreElements(article: ArticleV2DTO, _: any, context: ContextWithLoaders): Promise { - const language = - article.supportedLanguages?.find((lang) => lang === context.language) ?? - article.supportedLanguages?.[0] ?? - context.language; - return coreElements(article.grepCodes ?? [], language, context); + return coreElements(article.grepCodes ?? [], context); }, async crossSubjectTopics( article: ArticleV2DTO, @@ -73,11 +61,7 @@ export const resolvers = { if (!crossSubjectCodes.length) { return []; } - const language = - article.supportedLanguages?.find((lang) => lang === context.language) ?? - article.supportedLanguages?.[0] ?? - context.language; - const crossSubjectTopicInfo = await fetchCrossSubjectTopicsByCode(crossSubjectCodes, language, context); + const crossSubjectTopicInfo = await fetchCrossSubjectTopicsByCode(crossSubjectCodes, context); const topics = await fetchSubjectTopics(args.subjectId, context); return crossSubjectTopicInfo.map((crossSubjectTopic) => { const topic = topics.find((topic) => topic.name === crossSubjectTopic.title); diff --git a/src/resolvers/curriculumResolvers.ts b/src/resolvers/curriculumResolvers.ts index 954a8181..8345c241 100644 --- a/src/resolvers/curriculumResolvers.ts +++ b/src/resolvers/curriculumResolvers.ts @@ -12,17 +12,13 @@ import { competenceGoals, coreElements } from "../api/searchApi"; export const Query = { async competenceGoals( _: any, - { codes, language }: { codes: string[]; language?: string }, + { codes }: { codes: string[] }, context: ContextWithLoaders, ): Promise { - return competenceGoals(codes, language, context); + return competenceGoals(codes, context); }, - async coreElements( - _: any, - { codes, language }: { codes: string[]; language?: string }, - context: ContextWithLoaders, - ): Promise { - return coreElements(codes, language, context); + async coreElements(_: any, { codes }: { codes: string[] }, context: ContextWithLoaders): Promise { + return coreElements(codes, context); }, }; diff --git a/src/schema.ts b/src/schema.ts index 29e844e7..357d125e 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -1455,10 +1455,10 @@ export const typeDefs = gql` topic(id: String!, subjectId: String): Topic topics(contentUri: String!, filterVisible: Boolean): [Topic!] frontpage: FrontpageMenu - competenceGoals(codes: [String], language: String): [CompetenceGoal!] - competenceGoal(code: String!, language: String): CompetenceGoal - coreElements(codes: [String], language: String): [CoreElement!] - coreElement(code: String!, language: String): CoreElement + competenceGoals(codes: [String]): [CompetenceGoal!] + competenceGoal(code: String!): CompetenceGoal + coreElements(codes: [String]): [CoreElement!] + coreElement(code: String!): CoreElement search( query: String page: Int diff --git a/src/types/schema.d.ts b/src/types/schema.d.ts index 60b73441..7a936ff6 100644 --- a/src/types/schema.d.ts +++ b/src/types/schema.d.ts @@ -1452,25 +1452,21 @@ export type GQLQueryAudioArgs = { export type GQLQueryCompetenceGoalArgs = { code: Scalars['String']['input']; - language?: InputMaybe; }; export type GQLQueryCompetenceGoalsArgs = { codes?: InputMaybe>>; - language?: InputMaybe; }; export type GQLQueryCoreElementArgs = { code: Scalars['String']['input']; - language?: InputMaybe; }; export type GQLQueryCoreElementsArgs = { codes?: InputMaybe>>; - language?: InputMaybe; };