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

Commit b7e440c

Browse files
committed
Merge pull request #418 from rakeshrc/perf
Performance improvements for challenges and added cacheTime for few f…
2 parents 3972fe8 + ccff6c1 commit b7e440c

File tree

4 files changed

+110
-23
lines changed

4 files changed

+110
-23
lines changed

actions/challenges.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2443,6 +2443,7 @@ exports.getSoftwareChallenge = {
24432443
outputExample: {},
24442444
version: 'v2',
24452445
transaction : 'read', // this action is read-only
2446+
cacheLifetime: 1000 * 60 * 10,
24462447
databases : ["tcs_catalog"],
24472448
run: function (api, connection, next) {
24482449
if (connection.dbConnectionMap) {
@@ -2468,6 +2469,7 @@ exports.getStudioChallenge = {
24682469
outputExample: {},
24692470
version: 'v2',
24702471
transaction: 'read', // this action is read-only
2472+
cacheLifetime: 1000 * 60 * 10,
24712473
databases: ["tcs_catalog", "tcs_dw"],
24722474
run: function (api, connection, next) {
24732475
if (connection.dbConnectionMap) {
@@ -2495,6 +2497,7 @@ exports.getChallenge = {
24952497
outputExample: {},
24962498
version: 'v2',
24972499
transaction: 'read', // this action is read-only
2500+
cacheLifetime: 1000 * 60 * 10,
24982501
databases: ["tcs_catalog", "tcs_dw"],
24992502
run: function (api, connection, next) {
25002503
var challengeId = Number(connection.params.challengeId),
@@ -2537,6 +2540,7 @@ exports.searchSoftwareChallenges = {
25372540
outputExample: {},
25382541
version: 'v2',
25392542
transaction : 'read', // this action is read-only
2543+
cacheLifetime: 1000 * 60 * 10,
25402544
databases : ["tcs_catalog"],
25412545
run: function (api, connection, next) {
25422546
if (connection.dbConnectionMap) {
@@ -2562,6 +2566,7 @@ exports.searchStudioChallenges = {
25622566
outputExample: {},
25632567
version: 'v2',
25642568
transaction : 'read', // this action is read-only
2569+
cacheLifetime: 1000 * 60 * 10,
25652570
databases : ["tcs_catalog"],
25662571
run: function (api, connection, next) {
25672572
if (connection.dbConnectionMap) {
@@ -2587,6 +2592,7 @@ exports.searchSoftwareAndStudioChallenges = {
25872592
outputExample: {},
25882593
version: 'v2',
25892594
transaction : 'read', // this action is read-only
2595+
cacheLifetime: 1000 * 60 * 10,
25902596
databases : ["tcs_catalog"],
25912597
run: function (api, connection, next) {
25922598
if (connection.dbConnectionMap) {
@@ -3841,6 +3847,7 @@ exports.getOpenChallenges = {
38413847
outputExample: {},
38423848
version: 'v2',
38433849
transaction: 'read',
3850+
cacheLifetime: 1000 * 60 * 10,
38443851
databases: ['tcs_catalog'],
38453852
run: function (api, connection, next) {
38463853
if (connection.dbConnectionMap) {
@@ -4027,6 +4034,7 @@ exports.getMyChallenges = {
40274034
outputExample: {},
40284035
version: 'v2',
40294036
transaction: 'read',
4037+
cacheLifetime: 1000 * 60 * 10,
40304038
databases: ['tcs_catalog'],
40314039
run: function (api, connection, next) {
40324040
if (connection.dbConnectionMap) {

queries/get_open_challenges

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
SELECT is_studio
2+
, challenge_type
3+
, challenge_name
4+
, challenge_id
5+
, forum_id
6+
, num_submissions
7+
, num_registrants
8+
, number_of_checkpoints_prizes
9+
, first_place_prize
10+
, total_prize
11+
, total_checkpoint_prize
12+
, registration_end_date
13+
, registration_start_date
14+
, checkpoint_submission_end_date
15+
, submission_end_date
16+
, current_phase_end_date
17+
, current_phase_remaining_time
18+
, status
19+
, current_phase_name
20+
, digital_run_points
21+
, 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
22+
, (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
23+
, technology_list(value_for_technology) AS technologies
24+
, platform_list(id_for_platform) as platforms
25+
, registration_open
26+
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id =challenge_id), CAST('f' AS boolean)) AS is_private
27+
FROM (
128
SELECT
229
SKIP @first_row_index@
330
FIRST @page_size@
@@ -26,12 +53,9 @@ FIRST @page_size@
2653
, CASE WHEN pidr.value = 'On' THEN
2754
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))
2855
ELSE NULL END AS digital_run_points
29-
, 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
30-
, (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
31-
, technology_list(pi1.value) AS technologies
32-
, platform_list(p.project_id) as platforms
56+
, pi1.value AS value_for_technology
57+
, p.project_id as id_for_platform
3358
, CASE WHEN (pp1.phase_status_id = 2) THEN 'Yes' ELSE 'No' END AS registration_open
34-
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private
3559
FROM project p
3660
, project_status_lu pstatus
3761
, 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
7498
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@
7599
AND p.tc_direct_project_id = DECODE(@project_id@, 0, p.tc_direct_project_id, @project_id@)
76100
ORDER BY @sort_column@ @sort_order@
101+
)

queries/get_past_challenges

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,35 @@
1+
SELECT is_studio
2+
, challenge_type
3+
, challenge_name
4+
, challenge_id
5+
, (SELECT value FROM project_info WHERE project_id = challenge_id AND project_info_type_id = 4) AS forum_id
6+
, num_submissions
7+
, num_registrants
8+
, number_of_checkpoints_prizes
9+
, first_place_prize
10+
, total_prize
11+
, checkpoint_total_prizes
12+
, registration_start_date
13+
, registration_end_date
14+
, checkpoint_submission_end_date
15+
, submission_end_date
16+
, status
17+
, digital_run_points
18+
, 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
19+
, (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
20+
, technology_list(value_for_technology) AS technologies
21+
, platform_list(id_for_platform) AS platforms
22+
, registration_open
23+
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = challenge_id), CAST('f' AS boolean)) AS is_private
24+
, (SELECT value FROM project_info pi53 WHERE project_id = challenge_id AND project_info_type_id = 53) AS submissions_viewable
25+
FROM (
126
SELECT
227
SKIP @first_row_index@
328
FIRST @page_size@
429
CASE WHEN (p.project_studio_spec_id IS NOT NULL) THEN 1 ELSE 0 END AS is_studio
530
, pcl.description AS challenge_type
631
, pn.value AS challenge_name
732
, p.project_id AS challenge_id
8-
, (SELECT value FROM project_info WHERE project_id = p.project_id AND project_info_type_id = 4) AS forum_id
933
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
1034
WHERE u1.project_id = p.project_id
1135
AND s1.submission_type_id = 1
@@ -23,13 +47,9 @@ FIRST @page_size@
2347
, CASE WHEN pidr.value = 'On' THEN
2448
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))
2549
ELSE NULL END AS digital_run_points
26-
, 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
27-
, (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
28-
, technology_list(pi1.value) AS technologies
29-
, platform_list(p.project_id) AS platforms
50+
, pi1.value AS value_for_technology
51+
, p.project_id AS id_for_platform
3052
, CASE WHEN (pp1.phase_status_id = 2) THEN 'Yes' ELSE 'No' END AS registration_open
31-
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private
32-
, (SELECT value FROM project_info pi53 WHERE project_id = p.project_id AND project_info_type_id = 53) AS submissions_viewable
3353
FROM project p
3454
INNER JOIN project_status_lu pstatus ON pstatus.project_status_id = p.project_status_id
3555
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
5272
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@
5373
AND p.tc_direct_project_id = DECODE(@project_id@, 0, p.tc_direct_project_id, @project_id@)
5474
ORDER BY @sort_column@ @sort_order@
75+
)

queries/search_past_software_studio_challenges

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,44 @@
1+
SELECT is_studio
2+
, challenge_id
3+
, challenge_type
4+
, challenge_name
5+
, project_id
6+
, (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
7+
AND pc3.phase_criteria_type_id = 1) AS screening_scorecard_id
8+
, (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
9+
AND pc4.phase_criteria_type_id = 1) AS review_scorecard_id
10+
, cmc_task_id
11+
, (select value from project_info forum where forum.project_id = challenge_id and forum.project_info_type_id = 4) as forum_id
12+
, num_submissions
13+
, num_registrants
14+
, number_of_checkpoints_prizes
15+
, top_checkpoint_prize
16+
, prize1
17+
, prize2
18+
, prize3
19+
, prize4
20+
, prize5
21+
, prize6
22+
, prize7
23+
, prize8
24+
, posting_date
25+
, registration_end_date
26+
, checkpoint_submission_end_date
27+
, submission_end_date
28+
, appeals_end_date
29+
, final_fix_end_date
30+
, current_phase_end_date
31+
, current_phase_remaining_time
32+
, current_status
33+
, current_phase_name
34+
, digital_run_points
35+
, 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
36+
, (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
37+
, technology_list(value_for_technology) AS technology
38+
, platform_list(id_for_platform) AS platforms
39+
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = challenge_id), CAST('f' AS boolean)) AS is_private
40+
, (SELECT value FROM project_info pi53 WHERE project_id = challenge_id AND project_info_type_id = 53) AS submissions_viewable
41+
FROM (
142
SELECT
243
SKIP @firstRowIndex@
344
FIRST @pageSize@
@@ -6,12 +47,7 @@ FIRST @pageSize@
647
, pcl.description AS challenge_type
748
, challenge_name.value as challenge_name
849
, p.tc_direct_project_id AS project_id
9-
, (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
10-
AND pc3.phase_criteria_type_id = 1) AS screening_scorecard_id
11-
, (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
12-
AND pc4.phase_criteria_type_id = 1) AS review_scorecard_id
1350
, cmc_task_id.value as cmc_task_id
14-
, (select value from project_info forum where forum.project_id = p.project_id and forum.project_info_type_id = 4) as forum_id
1551
, (SELECT COUNT(*) FROM submission s1 INNER JOIN upload u1 ON s1.upload_id = u1.upload_id
1652
WHERE u1.project_id = p.project_id
1753
AND s1.submission_type_id = 1
@@ -42,12 +78,8 @@ FIRST @pageSize@
4278
, '' current_phase_name
4379
, (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
4480
and pi30.project_info_type_id = 30 and pi26.project_info_type_id = 26 and pi26.value = 'On') AS digital_run_points
45-
, 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
46-
, (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
47-
, technology_list(pi1.value) AS technology
48-
, platform_list(p.project_id) AS platforms
49-
, NVL((SELECT CAST('t' AS boolean) FROM contest_eligibility WHERE contest_id = p.project_id), CAST('f' AS boolean)) AS is_private
50-
, (SELECT value FROM project_info pi53 WHERE project_id = p.project_id AND project_info_type_id = 53) AS submissions_viewable
81+
, pi1.value AS value_for_technology
82+
, p.project_id AS id_for_platform
5183
FROM project p
5284
inner JOIN prize pr ON pr.project_id = p.project_id and pr.place =1 and pr.prize_type_id = 15
5385
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
78110
and pp.actual_end_time > '2012-01-01 00:00:00'
79111

80112
ORDER BY @sortColumn@ @sortOrder@
113+
)

0 commit comments

Comments
 (0)