From c2ffcd9a0c6a2241222ee1be94da2ac9543d4b2e Mon Sep 17 00:00:00 2001 From: denish-fearless Date: Mon, 30 Dec 2024 11:57:36 -0500 Subject: [PATCH 1/2] cached unfiltered data and applied filter to it --- backend/src/domain/search/searchTrainings.ts | 44 ++++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/backend/src/domain/search/searchTrainings.ts b/backend/src/domain/search/searchTrainings.ts index 9ef6ecd23..ef5d815cb 100644 --- a/backend/src/domain/search/searchTrainings.ts +++ b/backend/src/domain/search/searchTrainings.ts @@ -191,39 +191,37 @@ export const searchTrainingsFactory = (dataClient: DataClient): SearchTrainings const { page = 1, limit = 10, sort = "best_match" } = params; const query = buildQuery(params); - const filteredCacheKey = `filteredResults-${params.searchQuery}`; - let filteredResults = cache.get(filteredCacheKey); + const unFilteredCacheKey = `filteredResults-${params.searchQuery}`; + let unFilteredResults = cache.get(unFilteredCacheKey); - // If filtered results are not in cache, fetch and filter them - if (!filteredResults) { - console.log(`Fetching and filtering results for query: ${params.searchQuery}`); - //const { allCerts, totalResults } = await fetchAllCertsInBatches(query); + // If unfiltered results are not in cache, fetch the results + if (!unFilteredResults) { + console.log(`Fetching results for query: ${params.searchQuery}`); const { allCerts } = await fetchAllCertsInBatches(query); - const results = await Promise.all( + unFilteredResults = await Promise.all( allCerts.map((certificate) => transformCertificateToTraining(dataClient, certificate, params.searchQuery) ) ); - - // Apply filtering - filteredResults = await filterCerts( - results, - params.cip_code, - params.complete_in, - params.in_demand, - params.max_cost, - params.county, - params.miles, - params.zipcode, - params.format - ); - // Cache the filtered results - cache.set(filteredCacheKey, filteredResults, 300); // Cache for 5 minutes + cache.set(unFilteredCacheKey, unFilteredResults, 300); // Cache for 5 minutes } else { - console.log(`Cache hit for filtered results with key: ${filteredCacheKey}`); + console.log(`Cache hit for filtered results with key: ${unFilteredCacheKey}`); } + // Apply filtering + let filteredResults = await filterCerts( + unFilteredResults, + params.cip_code, + params.complete_in, + params.in_demand, + params.max_cost, + params.county, + params.miles, + params.zipcode, + params.format + ); + // Apply sorting to the cached filtered results const sortedResults = sortTrainings(filteredResults, sort); From 479b45c88759479a5f1e5bc12321ff3d1148ee63 Mon Sep 17 00:00:00 2001 From: denish-fearless Date: Fri, 3 Jan 2025 11:23:52 -0500 Subject: [PATCH 2/2] using const instead of let for filtered_results --- backend/src/domain/search/searchTrainings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/domain/search/searchTrainings.ts b/backend/src/domain/search/searchTrainings.ts index ef5d815cb..f6e91b342 100644 --- a/backend/src/domain/search/searchTrainings.ts +++ b/backend/src/domain/search/searchTrainings.ts @@ -210,7 +210,7 @@ export const searchTrainingsFactory = (dataClient: DataClient): SearchTrainings } // Apply filtering - let filteredResults = await filterCerts( + const filteredResults = await filterCerts( unFilteredResults, params.cip_code, params.complete_in,