Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

SUP-605 show challenges where name includes technology #427

Merged
merged 2 commits into from
May 28, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions actions/challenges.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,9 @@ var QUERY_PATH = './queries/';
*/
var TECHNOLOGY_FILTER = ' AND EXISTS (SELECT DISTINCT 1 FROM comp_technology ct WHERE ct.comp_vers_id = pi1.value ' +
'AND ct.technology_type_id IN (@filter@))';


var EXT_TECHNOLOGY_FILTER = ' AND (pn.value LIKE ("%@tech@%") OR EXISTS (SELECT DISTINCT 1 FROM comp_technology ct WHERE ct.comp_vers_id = pi1.value ' +
'AND ct.technology_type_id IN (@filter@)))';
/**
* The platform filter for challenges api.
* @since 1.23
Expand Down Expand Up @@ -745,14 +747,15 @@ function transferResultV2(src, helper) {
* @param {String} content - the content that need in template.
* @since 1.23
*/
var editSql = function (sql, template, content) {
var editSql = function (sql, template, content, tech) {
// For empty sql just return it.
if (sql.length === 0) {
return sql;
}
var index = sql.toLowerCase().indexOf('order by');
if (!_.isUndefined(template)) {
template = template.replace('@filter@', content);
template = template.replace('@tech@', tech);
}
return sql.slice(0, index) + template + sql.slice(index, sql.length);
};
Expand All @@ -776,8 +779,13 @@ var addFilter = function (sql, filter, isMyChallenges, helper, caller) {

if (_.isDefined(filter.technologies)) {
technology = filter.technologies.join(', ');
sql.count = editSql(sql.count, TECHNOLOGY_FILTER, technology);
sql.data = editSql(sql.data, TECHNOLOGY_FILTER, technology);
if (filter.tech) {
sql.count = editSql(sql.count, EXT_TECHNOLOGY_FILTER, technology, filter.tech);
sql.data = editSql(sql.data, EXT_TECHNOLOGY_FILTER, technology, filter.tech);
} else {
sql.count = editSql(sql.count, TECHNOLOGY_FILTER, technology);
sql.data = editSql(sql.data, TECHNOLOGY_FILTER, technology);
}
}

if (_.isDefined(filter.challengeType)) {
Expand Down Expand Up @@ -3708,6 +3716,10 @@ var getChallenges = function (api, connection, listType, isMyChallenges, next) {
},
function (cb) {
validateInputParameterV2(helper, caller, type, query, filter, pageIndex, pageSize, sortColumn, sortOrder, listType, dbConnectionMap, cb);

if (filter.technologies) {
filter.tech = filter.technologies.split(',')[0];
}
}, function (cb) {
if (pageIndex === -1) {
pageIndex = 1;
Expand Down
2 changes: 0 additions & 2 deletions queries/get_active_challenges
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
SELECT
SKIP @first_row_index@
FIRST @page_size@
CASE WHEN (p.project_studio_spec_id IS NOT NULL) THEN 1 ELSE 0 END AS is_studio
, pcl.description AS challenge_type
, pn.value AS challenge_name
Expand Down