From e6066ad9f36e4d16b63c363d4569229875af0d1e Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 09:53:32 +1100 Subject: [PATCH 01/11] Initial skill search implementation https://topcoder.atlassian.net/browse/TSJR-327 --- src/services/ChallengeService.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 30d99f24..52ff3d23 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -590,6 +590,20 @@ async function searchChallenges(currentUser, criteria) { }); } + const includedSkillIds = _.isArray(criteria.skillIds) ? criteria.skillIds : []; + + if (includedSkillIds.length > 0) { + for (const skillId of includedSkillIds) { + const matchPhrase = {}; + matchPhrase[`skills.id`] = `${skillId}`; + mustQuery.push({ + bool: { + should: matchPhrase, + }, + }); + } + } + // FIXME: Tech Debt let excludeTasks = true; // if you're an admin or m2m, security rules wont be applied @@ -881,6 +895,7 @@ searchChallenges.schema = { description: Joi.string(), timelineTemplateId: Joi.string(), // Joi.optionalId(), reviewType: Joi.string(), + skillIds: Joi.array().items(Joi.string()), tag: Joi.string(), tags: Joi.array().items(Joi.string()), includeAllTags: Joi.boolean().default(true), From 19dcb2203b3db2c0b50facb94bed8923ca9a3ad6 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 09:54:10 +1100 Subject: [PATCH 02/11] Deploy branch to dev --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8e095a20..59837428 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -91,6 +91,7 @@ workflows: only: - dev - CORE-40 + - TSJR-327 - "build-qa": context: org-global From 58a7a9b3f41a3009e417db76a505effb75c2421c Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 10:34:40 +1100 Subject: [PATCH 03/11] Pin docker to older version, before version 7 that broke the builds --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 59837428..31a1e591 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,6 +9,7 @@ install_dependency: &install_dependency sudo apt install jq sudo apt install python3-pip sudo pip3 install awscli --upgrade + sudo pip3 install docker==6.1.3 sudo pip3 install docker-compose install_deploysuite: &install_deploysuite name: Installation of install_deploysuite. From 52567b26f99445730e83a7c199c5f46826e045b5 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 10:47:27 +1100 Subject: [PATCH 04/11] Debug logging --- src/services/ChallengeService.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 52ff3d23..f55e7921 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -593,6 +593,7 @@ async function searchChallenges(currentUser, criteria) { const includedSkillIds = _.isArray(criteria.skillIds) ? criteria.skillIds : []; if (includedSkillIds.length > 0) { + logger.debug(`Skill IDs for search: ${JSON.stringify(includedSkillIds)}`) for (const skillId of includedSkillIds) { const matchPhrase = {}; matchPhrase[`skills.id`] = `${skillId}`; @@ -602,6 +603,9 @@ async function searchChallenges(currentUser, criteria) { }, }); } + logger.debug(`Skill ID Query: ${JSON.stringify(mustQuery)}`) + } else { + logger.debug("No skill IDs sent for searching") } // FIXME: Tech Debt From 9dc0953d90977176ad916dd965f818e30500832b Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 10:58:04 +1100 Subject: [PATCH 05/11] Update to use boolQuery --- src/services/ChallengeService.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index f55e7921..01833d05 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -595,15 +595,19 @@ async function searchChallenges(currentUser, criteria) { if (includedSkillIds.length > 0) { logger.debug(`Skill IDs for search: ${JSON.stringify(includedSkillIds)}`) for (const skillId of includedSkillIds) { + const skillQuery=[] const matchPhrase = {}; matchPhrase[`skills.id`] = `${skillId}`; - mustQuery.push({ - bool: { - should: matchPhrase, - }, - }); + skillQuery.push(matchPhrase) + + boolQuery.push({ + bool:{ + should:skillQuery, + minimum_should_match: 1 + } + }) } - logger.debug(`Skill ID Query: ${JSON.stringify(mustQuery)}`) + logger.debug(`Skill ID Query: ${JSON.stringify(boolQuery)}`) } else { logger.debug("No skill IDs sent for searching") } From 4d22cf06893d565454926b3036c3c8fb072f1909 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 11:10:35 +1100 Subject: [PATCH 06/11] Little more debug logging --- src/services/ChallengeService.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 01833d05..44e0d518 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -790,6 +790,7 @@ async function searchChallenges(currentUser, criteria) { }; } + logger.debug(`Final query: ${finalQuery}`) const esQuery = { index: config.get("ES.ES_INDEX"), size: perPage, From 50f012e60720fb87aaafe094f6134dc28a2d80b8 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 11:16:10 +1100 Subject: [PATCH 07/11] Typo --- src/services/ChallengeService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 44e0d518..65318c7f 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -790,7 +790,7 @@ async function searchChallenges(currentUser, criteria) { }; } - logger.debug(`Final query: ${finalQuery}`) + logger.debug(`Final query: ${JSON.stringify(finalQuery)}`) const esQuery = { index: config.get("ES.ES_INDEX"), size: perPage, From dc983037438ebebe52430ff48ca20b765e78fb24 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 11:25:34 +1100 Subject: [PATCH 08/11] Fix match_phrase usage --- src/services/ChallengeService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index 65318c7f..fb8f301a 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -598,7 +598,7 @@ async function searchChallenges(currentUser, criteria) { const skillQuery=[] const matchPhrase = {}; matchPhrase[`skills.id`] = `${skillId}`; - skillQuery.push(matchPhrase) + skillQuery.push({"match_phrase":matchPhrase}) boolQuery.push({ bool:{ From c2283f0918f84155a8b32553aae506eed71b70d1 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 11:33:33 +1100 Subject: [PATCH 09/11] Make sure the query is singular --- src/services/ChallengeService.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index fb8f301a..c73253d1 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -599,14 +599,13 @@ async function searchChallenges(currentUser, criteria) { const matchPhrase = {}; matchPhrase[`skills.id`] = `${skillId}`; skillQuery.push({"match_phrase":matchPhrase}) - - boolQuery.push({ - bool:{ - should:skillQuery, - minimum_should_match: 1 - } - }) } + boolQuery.push({ + bool:{ + should:skillQuery, + minimum_should_match: 1 + } + }) logger.debug(`Skill ID Query: ${JSON.stringify(boolQuery)}`) } else { logger.debug("No skill IDs sent for searching") From 825b8c1165cbee04430559a8a25f990ba79f7cc8 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 11:41:30 +1100 Subject: [PATCH 10/11] Typo --- src/services/ChallengeService.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index c73253d1..f1daa3b3 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -594,8 +594,9 @@ async function searchChallenges(currentUser, criteria) { if (includedSkillIds.length > 0) { logger.debug(`Skill IDs for search: ${JSON.stringify(includedSkillIds)}`) + const skillQuery=[] + for (const skillId of includedSkillIds) { - const skillQuery=[] const matchPhrase = {}; matchPhrase[`skills.id`] = `${skillId}`; skillQuery.push({"match_phrase":matchPhrase}) From adf6983659cf154ff8c45438edb36db6620e21c8 Mon Sep 17 00:00:00 2001 From: Justin Gasper Date: Fri, 22 Dec 2023 12:02:24 +1100 Subject: [PATCH 11/11] Remove debug logging --- src/services/ChallengeService.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/services/ChallengeService.js b/src/services/ChallengeService.js index f1daa3b3..f17bf7c5 100644 --- a/src/services/ChallengeService.js +++ b/src/services/ChallengeService.js @@ -593,7 +593,6 @@ async function searchChallenges(currentUser, criteria) { const includedSkillIds = _.isArray(criteria.skillIds) ? criteria.skillIds : []; if (includedSkillIds.length > 0) { - logger.debug(`Skill IDs for search: ${JSON.stringify(includedSkillIds)}`) const skillQuery=[] for (const skillId of includedSkillIds) { @@ -607,10 +606,7 @@ async function searchChallenges(currentUser, criteria) { minimum_should_match: 1 } }) - logger.debug(`Skill ID Query: ${JSON.stringify(boolQuery)}`) - } else { - logger.debug("No skill IDs sent for searching") - } + } // FIXME: Tech Debt let excludeTasks = true; @@ -790,7 +786,6 @@ async function searchChallenges(currentUser, criteria) { }; } - logger.debug(`Final query: ${JSON.stringify(finalQuery)}`) const esQuery = { index: config.get("ES.ES_INDEX"), size: perPage,