diff --git a/actions/challenges.js b/actions/challenges.js index fb4fb73d4..ebae29efe 100755 --- a/actions/challenges.js +++ b/actions/challenges.js @@ -2443,6 +2443,7 @@ exports.getSoftwareChallenge = { outputExample: {}, version: 'v2', transaction : 'read', // this action is read-only + cacheLifetime: 1000 * 60 * 10, databases : ["tcs_catalog"], run: function (api, connection, next) { if (connection.dbConnectionMap) { @@ -2468,6 +2469,7 @@ exports.getStudioChallenge = { outputExample: {}, version: 'v2', transaction: 'read', // this action is read-only + cacheLifetime: 1000 * 60 * 10, databases: ["tcs_catalog", "tcs_dw"], run: function (api, connection, next) { if (connection.dbConnectionMap) { @@ -2495,6 +2497,7 @@ exports.getChallenge = { outputExample: {}, version: 'v2', transaction: 'read', // this action is read-only + cacheLifetime: 1000 * 60 * 10, databases: ["tcs_catalog", "tcs_dw"], run: function (api, connection, next) { var challengeId = Number(connection.params.challengeId), @@ -2537,6 +2540,7 @@ exports.searchSoftwareChallenges = { outputExample: {}, version: 'v2', transaction : 'read', // this action is read-only + cacheLifetime: 1000 * 60 * 10, databases : ["tcs_catalog"], run: function (api, connection, next) { if (connection.dbConnectionMap) { @@ -2562,6 +2566,7 @@ exports.searchStudioChallenges = { outputExample: {}, version: 'v2', transaction : 'read', // this action is read-only + cacheLifetime: 1000 * 60 * 10, databases : ["tcs_catalog"], run: function (api, connection, next) { if (connection.dbConnectionMap) { @@ -2587,6 +2592,7 @@ exports.searchSoftwareAndStudioChallenges = { outputExample: {}, version: 'v2', transaction : 'read', // this action is read-only + cacheLifetime: 1000 * 60 * 10, databases : ["tcs_catalog"], run: function (api, connection, next) { if (connection.dbConnectionMap) { @@ -3841,6 +3847,7 @@ exports.getOpenChallenges = { outputExample: {}, version: 'v2', transaction: 'read', + cacheLifetime: 1000 * 60 * 10, databases: ['tcs_catalog'], run: function (api, connection, next) { if (connection.dbConnectionMap) { @@ -4027,6 +4034,7 @@ exports.getMyChallenges = { outputExample: {}, version: 'v2', transaction: 'read', + cacheLifetime: 1000 * 60 * 10, databases: ['tcs_catalog'], run: function (api, connection, next) { if (connection.dbConnectionMap) { diff --git a/queries/get_open_challenges b/queries/get_open_challenges index 9fdcb594b..4814d5a0a 100644 --- a/queries/get_open_challenges +++ b/queries/get_open_challenges @@ -1,3 +1,30 @@ +SELECT is_studio +, challenge_type +, challenge_name +, challenge_id +, forum_id +, num_submissions +, num_registrants +, number_of_checkpoints_prizes +, first_place_prize +, total_prize +, total_checkpoint_prize +, registration_end_date +, registration_start_date +, checkpoint_submission_end_date +, submission_end_date +, current_phase_end_date +, current_phase_remaining_time +, status +, current_phase_name +, digital_run_points +, nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = challenge_id and c.contest_id = x.contest_id), 0) as event_id +, (SELECT event_short_desc from event e where e.event_id = nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = challenge_id and c.contest_id = x.contest_id), 0)) as event_name +, technology_list(value_for_technology) AS technologies +, platform_list(id_for_platform) as platforms +, registration_open +, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id =challenge_id), CAST('f' AS boolean)) AS is_private +FROM ( SELECT SKIP @first_row_index@ FIRST @page_size@ @@ -26,12 +53,9 @@ FIRST @page_size@ , CASE WHEN pidr.value = 'On' THEN NVL((SELECT value::decimal FROM project_info pi_dr WHERE pi_dr.project_info_type_id = 30 AND pi_dr.project_id = p.project_id), (SELECT round(NVL(pi16.value::decimal, 0)) FROM project_info pi16 WHERE pi16.project_info_type_id = 16 AND pi16.project_id = p.project_id)) ELSE NULL END AS digital_run_points -, nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = p.project_id and c.contest_id = x.contest_id), 0) as event_id -, (SELECT event_short_desc from event e where e.event_id = nvl((SELECT max(event_id) from contest_project_xref x, contest c where project_id = p.project_id and c.contest_id = x.contest_id), 0)) as event_name -, technology_list(pi1.value) AS technologies -, platform_list(p.project_id) as platforms +, pi1.value AS value_for_technology +, p.project_id as id_for_platform , CASE WHEN (pp1.phase_status_id = 2) THEN 'Yes' ELSE 'No' END AS registration_open -, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private FROM project p , project_status_lu pstatus , project_phase pp1 --registration phase @@ -74,3 +98,4 @@ AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 1), 0) <= @prize_upper_bound@ AND p.tc_direct_project_id = DECODE(@project_id@, 0, p.tc_direct_project_id, @project_id@) ORDER BY @sort_column@ @sort_order@ +) diff --git a/queries/get_past_challenges b/queries/get_past_challenges index 21c739e3e..45c1668c2 100644 --- a/queries/get_past_challenges +++ b/queries/get_past_challenges @@ -1,3 +1,28 @@ +SELECT is_studio +, challenge_type +, challenge_name +, challenge_id +, (SELECT value FROM project_info WHERE project_id = challenge_id AND project_info_type_id = 4) AS forum_id +, num_submissions +, num_registrants +, number_of_checkpoints_prizes +, first_place_prize +, total_prize +, checkpoint_total_prizes +, registration_start_date +, registration_end_date +, checkpoint_submission_end_date +, submission_end_date +, status +, digital_run_points +, nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = challenge_id AND c.contest_id = x.contest_id), 0) AS event_id +, (SELECT event_short_desc FROM event e WHERE e.event_id = nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = challenge_id AND c.contest_id = x.contest_id), 0)) AS event_name +, technology_list(value_for_technology) AS technologies +, platform_list(id_for_platform) AS platforms +, registration_open +, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = challenge_id), CAST('f' AS boolean)) AS is_private +, (SELECT value FROM project_info pi53 WHERE project_id = challenge_id AND project_info_type_id = 53) AS submissions_viewable +FROM ( SELECT SKIP @first_row_index@ FIRST @page_size@ @@ -5,7 +30,6 @@ FIRST @page_size@ , pcl.description AS challenge_type , pn.value AS challenge_name , p.project_id AS challenge_id -, (SELECT value FROM project_info WHERE project_id = p.project_id AND project_info_type_id = 4) AS forum_id , (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id WHERE u1.project_id = p.project_id AND s1.submission_type_id = 1 @@ -23,13 +47,9 @@ FIRST @page_size@ , CASE WHEN pidr.value = 'On' THEN NVL((SELECT value::decimal FROM project_info pi_dr WHERE pi_dr.project_info_type_id = 30 AND pi_dr.project_id = p.project_id), (SELECT round(NVL(pi16.value::decimal, 0)) FROM project_info pi16 WHERE pi16.project_info_type_id = 16 AND pi16.project_id = p.project_id)) ELSE NULL END AS digital_run_points -, nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = p.project_id AND c.contest_id = x.contest_id), 0) AS event_id -, (SELECT event_short_desc FROM event e WHERE e.event_id = nvl((SELECT MAX(event_id) FROM contest_project_xref x, contest c WHERE project_id = p.project_id AND c.contest_id = x.contest_id), 0)) AS event_name -, technology_list(pi1.value) AS technologies -, platform_list(p.project_id) AS platforms +, pi1.value AS value_for_technology +, p.project_id AS id_for_platform , CASE WHEN (pp1.phase_status_id = 2) THEN 'Yes' ELSE 'No' END AS registration_open -, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private -, (SELECT value FROM project_info pi53 WHERE project_id = p.project_id AND project_info_type_id = 53) AS submissions_viewable FROM project p INNER JOIN project_status_lu pstatus ON pstatus.project_status_id = p.project_status_id INNER JOIN project_category_lu pcl ON pcl.project_category_id = p.project_category_id @@ -52,3 +72,4 @@ AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND NVL((SELECT pr.prize_amount FROM prize pr WHERE pr.project_id = p.project_id AND pr.prize_type_id = 15 AND pr.place = 1), 0) <= @prize_upper_bound@ AND p.tc_direct_project_id = DECODE(@project_id@, 0, p.tc_direct_project_id, @project_id@) ORDER BY @sort_column@ @sort_order@ +) diff --git a/queries/search_past_software_studio_challenges b/queries/search_past_software_studio_challenges index 982a3d692..660133285 100644 --- a/queries/search_past_software_studio_challenges +++ b/queries/search_past_software_studio_challenges @@ -1,3 +1,44 @@ +SELECT is_studio +, challenge_id +, challenge_type +, challenge_name +, project_id +, (select max(pc3.parameter) FROM project_phase pp3, phase_criteria pc3 where challenge_id = pp3.project_id and pp3.project_phase_id = pc3.project_phase_id and pp3.phase_type_id = 3 + AND pc3.phase_criteria_type_id = 1) AS screening_scorecard_id +, (select max(pc4.parameter) FROM project_phase pp4, phase_criteria pc4 where challenge_id = pp4.project_id and pp4.project_phase_id = pc4.project_phase_id and pp4.phase_type_id = 4 + AND pc4.phase_criteria_type_id = 1) AS review_scorecard_id +, cmc_task_id +, (select value from project_info forum where forum.project_id = challenge_id and forum.project_info_type_id = 4) as forum_id +, num_submissions +, num_registrants +, number_of_checkpoints_prizes +, top_checkpoint_prize +, prize1 +, prize2 +, prize3 +, prize4 +, prize5 +, prize6 +, prize7 +, prize8 +, posting_date +, registration_end_date +, checkpoint_submission_end_date +, submission_end_date +, appeals_end_date +, final_fix_end_date +, current_phase_end_date +, current_phase_remaining_time +, current_status +, current_phase_name +, digital_run_points +, NVL((SELECT max(event_id) FROM contest_project_xref x, contest c WHERE project_id = challenge_id AND c.contest_id = x.contest_id), 0) AS event_id +, (SELECT event_short_desc FROM event e WHERE e.event_id = nvl((SELECT max(event_id) FROM contest_project_xref x, contest c WHERE project_id = challenge_id AND c.contest_id = x.contest_id), 0)) AS event_name +, technology_list(value_for_technology) AS technology +, platform_list(id_for_platform) AS platforms +, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = challenge_id), CAST('f' AS boolean)) AS is_private +, (SELECT value FROM project_info pi53 WHERE project_id = challenge_id AND project_info_type_id = 53) AS submissions_viewable +FROM ( SELECT SKIP @firstRowIndex@ FIRST @pageSize@ @@ -6,12 +47,7 @@ FIRST @pageSize@ , pcl.description AS challenge_type , challenge_name.value as challenge_name , p.tc_direct_project_id AS project_id -, (select max(pc3.parameter) FROM project_phase pp3, phase_criteria pc3 where p.project_id = pp3.project_id and pp3.project_phase_id = pc3.project_phase_id and pp3.phase_type_id = 3 - AND pc3.phase_criteria_type_id = 1) AS screening_scorecard_id -, (select max(pc4.parameter) FROM project_phase pp4, phase_criteria pc4 where p.project_id = pp4.project_id and pp4.project_phase_id = pc4.project_phase_id and pp4.phase_type_id = 4 - AND pc4.phase_criteria_type_id = 1) AS review_scorecard_id , cmc_task_id.value as cmc_task_id -, (select value from project_info forum where forum.project_id = p.project_id and forum.project_info_type_id = 4) as forum_id , (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id WHERE u1.project_id = p.project_id AND s1.submission_type_id = 1 @@ -42,12 +78,8 @@ FIRST @pageSize@ , '' current_phase_name , (select nvl(pi30.value, 0) from project_info pi30, project_info pi26 where pi30.project_id = p.project_id and pi26.project_id = p.project_id and pi30.project_info_type_id = 30 and pi26.project_info_type_id = 26 and pi26.value = 'On') AS digital_run_points -, NVL((SELECT max(event_id) FROM contest_project_xref x, contest c WHERE project_id = p.project_id AND c.contest_id = x.contest_id), 0) AS event_id -, (SELECT event_short_desc FROM event e WHERE e.event_id = nvl((SELECT max(event_id) FROM contest_project_xref x, contest c WHERE project_id = p.project_id AND c.contest_id = x.contest_id), 0)) AS event_name -, technology_list(pi1.value) AS technology -, platform_list(p.project_id) AS platforms -, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private -, (SELECT value FROM project_info pi53 WHERE project_id = p.project_id AND project_info_type_id = 53) AS submissions_viewable +, pi1.value AS value_for_technology +, p.project_id AS id_for_platform FROM project p inner JOIN prize pr ON pr.project_id = p.project_id and pr.place =1 and pr.prize_type_id = 15 inner JOIN project_phase pp ON pp.project_id = p.project_id and pp.phase_type_id = 2 @@ -78,3 +110,4 @@ AND (not exists (SELECT contest_id FROM contest_eligibility WHERE contest_id = p and pp.actual_end_time > '2012-01-01 00:00:00' ORDER BY @sortColumn@ @sortOrder@ +)