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

Performance improvements for challenges and added cacheTime for few f… #418

Merged
merged 2 commits into from
May 7, 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
8 changes: 8 additions & 0 deletions actions/challenges.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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) {
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down
35 changes: 30 additions & 5 deletions queries/get_open_challenges
Original file line number Diff line number Diff line change
@@ -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@
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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@
)
35 changes: 28 additions & 7 deletions queries/get_past_challenges
Original file line number Diff line number Diff line change
@@ -1,11 +1,35 @@
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@
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
, 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
Expand All @@ -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
Expand All @@ -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@
)
55 changes: 44 additions & 11 deletions queries/search_past_software_studio_challenges
Original file line number Diff line number Diff line change
@@ -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@
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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@
)